Merge "Unlink Binder DeathRecipient when unregistering VMS clients." into rvc-dev
diff --git a/car-internal-lib/src/com/android/internal/car/EventLogTags.logtags b/car-internal-lib/src/com/android/internal/car/EventLogTags.logtags
index 9473474..e082df8 100644
--- a/car-internal-lib/src/com/android/internal/car/EventLogTags.logtags
+++ b/car-internal-lib/src/com/android/internal/car/EventLogTags.logtags
@@ -75,6 +75,9 @@
150109 car_user_svc_get_user_auth_req (uid|1),(user_id|1),(number_types|1)
150110 car_user_svc_get_user_auth_resp (number_values|1)
150111 car_user_svc_switch_user_ui_req (user_id|1)
+150112 car_user_svc_switch_user_from_hal_req (request_id|1),(uid|1)
+150113 car_user_svc_set_user_auth_req (uid|1),(user_id|1),(number_associations|1)
+150114 car_user_svc_set_user_auth_resp (number_values|1),(error_message|3)
150140 car_user_hal_initial_user_info_req (request_id|1),(request_type|1),(timeout|1)
150141 car_user_hal_initial_user_info_resp (request_id|1),(status|1),(action|1),(user_id|1),(flags|1),(safe_name|3)
@@ -84,6 +87,9 @@
150145 car_user_hal_get_user_auth_req (int32values|4)
150146 car_user_hal_get_user_auth_resp (int32values|4),(error_message|3)
150147 car_user_hal_legacy_switch_user_req (request_id|1),(target_user_id|1),(current_user_id|1)
+150148 car_user_hal_set_user_auth_req (int32values|4)
+150149 car_user_hal_set_user_auth_resp (int32values|4),(error_message|3)
+150150 car_user_hal_oem_switch_user_req (request_id|1),(target_user_id|1)
150171 car_user_mgr_add_listener (uid|1)
150172 car_user_mgr_remove_listener (uid|1)
@@ -92,3 +98,5 @@
150175 car_user_mgr_switch_user_response (uid|1),(status|1),(error_message|3)
150176 car_user_mgr_get_user_auth_req (types|4)
150177 car_user_mgr_get_user_auth_resp (values|4)
+150178 car_user_mgr_set_user_auth_req (types_and_values_pairs|4)
+150179 car_user_mgr_set_user_auth_resp (values|4)
diff --git a/car-lib/src/android/car/ICarUserService.aidl b/car-lib/src/android/car/ICarUserService.aidl
index 2eccdbb..b61b342 100644
--- a/car-lib/src/android/car/ICarUserService.aidl
+++ b/car-lib/src/android/car/ICarUserService.aidl
@@ -17,7 +17,7 @@
package android.car;
import android.content.pm.UserInfo;
-import android.car.user.GetUserIdentificationAssociationResponse;
+import android.car.user.UserIdentificationAssociationResponse;
import android.car.user.UserSwitchResult;
import com.android.internal.infra.AndroidFuture;
import com.android.internal.os.IResultReceiver;
@@ -27,15 +27,16 @@
UserInfo createDriver(in String name, boolean admin);
UserInfo createPassenger(in String name, int driverId);
boolean switchDriver(int driverId);
- oneway void switchUser(int tagerUserId, int timeoutMs,
- in AndroidFuture<UserSwitchResult> result);
+ void switchUser(int tagerUserId, int timeoutMs, in AndroidFuture<UserSwitchResult> result);
List<UserInfo> getAllDrivers();
List<UserInfo> getPassengers(int driverId);
boolean startPassenger(int passengerId, int zoneId);
boolean stopPassenger(int passengerId);
- oneway void setLifecycleListenerForUid(in IResultReceiver listener);
- oneway void resetLifecycleListenerForUid();
- oneway void getInitialUserInfo(int requestType, int timeoutMs, in IResultReceiver receiver);
- GetUserIdentificationAssociationResponse getUserIdentificationAssociation(in int[] types);
- oneway void setUserSwitchUiCallback(in IResultReceiver callback);
+ void setLifecycleListenerForUid(in IResultReceiver listener);
+ void resetLifecycleListenerForUid();
+ void getInitialUserInfo(int requestType, int timeoutMs, in IResultReceiver receiver);
+ UserIdentificationAssociationResponse getUserIdentificationAssociation(in int[] types);
+ void setUserIdentificationAssociation(int timeoutMs, in int[] types, in int[] values,
+ in AndroidFuture<UserIdentificationAssociationResponse> result);
+ void setUserSwitchUiCallback(in IResultReceiver callback);
}
diff --git a/car-lib/src/android/car/content/pm/CarPackageManager.java b/car-lib/src/android/car/content/pm/CarPackageManager.java
index 5d5936b..98c5822 100644
--- a/car-lib/src/android/car/content/pm/CarPackageManager.java
+++ b/car-lib/src/android/car/content/pm/CarPackageManager.java
@@ -108,8 +108,8 @@
@SystemApi
public void setAppBlockingPolicy(
String packageName, CarAppBlockingPolicy policy, @SetPolicyFlags int flags) {
- if ((flags & FLAG_SET_POLICY_WAIT_FOR_CHANGE) != 0 &&
- Looper.getMainLooper().isCurrentThread()) {
+ if ((flags & FLAG_SET_POLICY_WAIT_FOR_CHANGE) != 0
+ && Looper.getMainLooper().isCurrentThread()) {
throw new IllegalStateException(
"FLAG_SET_POLICY_WAIT_FOR_CHANGE cannot be used in main thread");
}
diff --git a/car-lib/src/android/car/diagnostic/CarDiagnosticEvent.java b/car-lib/src/android/car/diagnostic/CarDiagnosticEvent.java
index 94abbb5..901d14e 100644
--- a/car-lib/src/android/car/diagnostic/CarDiagnosticEvent.java
+++ b/car-lib/src/android/car/diagnostic/CarDiagnosticEvent.java
@@ -50,13 +50,13 @@
* Sparse array that contains the mapping of OBD2 diagnostic properties to their values for
* integer valued properties
*/
- private final SparseIntArray intValues;
+ private final SparseIntArray mIntValues;
/**
* Sparse array that contains the mapping of OBD2 diagnostic properties to their values for
* float valued properties
*/
- private final SparseArray<Float> floatValues;
+ private final SparseArray<Float> mFloatValues;
/**
* Diagnostic Troubleshooting Code (DTC) that was detected and caused this frame to be stored
@@ -68,18 +68,18 @@
frameType = in.readInt();
timestamp = in.readLong();
int len = in.readInt();
- floatValues = new SparseArray<>(len);
+ mFloatValues = new SparseArray<>(len);
for (int i = 0; i < len; ++i) {
int key = in.readInt();
float value = in.readFloat();
- floatValues.put(key, value);
+ mFloatValues.put(key, value);
}
len = in.readInt();
- intValues = new SparseIntArray(len);
+ mIntValues = new SparseIntArray(len);
for (int i = 0; i < len; ++i) {
int key = in.readInt();
int value = in.readInt();
- intValues.put(key, value);
+ mIntValues.put(key, value);
}
dtc = (String) in.readValue(String.class.getClassLoader());
// version 1 up to here
@@ -94,17 +94,17 @@
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(frameType);
dest.writeLong(timestamp);
- dest.writeInt(floatValues.size());
- for (int i = 0; i < floatValues.size(); ++i) {
- int key = floatValues.keyAt(i);
+ dest.writeInt(mFloatValues.size());
+ for (int i = 0; i < mFloatValues.size(); ++i) {
+ int key = mFloatValues.keyAt(i);
dest.writeInt(key);
- dest.writeFloat(floatValues.get(key));
+ dest.writeFloat(mFloatValues.get(key));
}
- dest.writeInt(intValues.size());
- for (int i = 0; i < intValues.size(); ++i) {
- int key = intValues.keyAt(i);
+ dest.writeInt(mIntValues.size());
+ for (int i = 0; i < mIntValues.size(); ++i) {
+ int key = mIntValues.keyAt(i);
dest.writeInt(key);
- dest.writeInt(intValues.get(key));
+ dest.writeInt(mIntValues.get(key));
}
dest.writeValue(dtc);
}
@@ -141,19 +141,19 @@
jsonWriter.name("timestamp").value(timestamp);
jsonWriter.name("intValues").beginArray();
- for (int i = 0; i < intValues.size(); ++i) {
+ for (int i = 0; i < mIntValues.size(); ++i) {
jsonWriter.beginObject();
- jsonWriter.name("id").value(intValues.keyAt(i));
- jsonWriter.name("value").value(intValues.valueAt(i));
+ jsonWriter.name("id").value(mIntValues.keyAt(i));
+ jsonWriter.name("value").value(mIntValues.valueAt(i));
jsonWriter.endObject();
}
jsonWriter.endArray();
jsonWriter.name("floatValues").beginArray();
- for (int i = 0; i < floatValues.size(); ++i) {
+ for (int i = 0; i < mFloatValues.size(); ++i) {
jsonWriter.beginObject();
- jsonWriter.name("id").value(floatValues.keyAt(i));
- jsonWriter.name("value").value(floatValues.valueAt(i));
+ jsonWriter.name("id").value(mFloatValues.keyAt(i));
+ jsonWriter.name("value").value(mFloatValues.valueAt(i));
jsonWriter.endObject();
}
jsonWriter.endArray();
@@ -184,8 +184,8 @@
String dtc) {
this.frameType = frameType;
this.timestamp = timestamp;
- this.floatValues = floatValues;
- this.intValues = intValues;
+ mFloatValues = floatValues;
+ mIntValues = intValues;
this.dtc = dtc;
}
@@ -308,16 +308,16 @@
* @hide
*/
public CarDiagnosticEvent withVendorSensorsRemoved() {
- SparseIntArray newIntValues = intValues.clone();
- SparseArray<Float> newFloatValues = floatValues.clone();
- for (int i = 0; i < intValues.size(); ++i) {
- int key = intValues.keyAt(i);
+ SparseIntArray newIntValues = mIntValues.clone();
+ SparseArray<Float> newFloatValues = mFloatValues.clone();
+ for (int i = 0; i < mIntValues.size(); ++i) {
+ int key = mIntValues.keyAt(i);
if (key >= android.car.diagnostic.IntegerSensorIndex.LAST_SYSTEM) {
newIntValues.delete(key);
}
}
- for (int i = 0; i < floatValues.size(); ++i) {
- int key = floatValues.keyAt(i);
+ for (int i = 0; i < mFloatValues.size(); ++i) {
+ int key = mFloatValues.keyAt(i);
if (key >= android.car.diagnostic.FloatSensorIndex.LAST_SYSTEM) {
newFloatValues.delete(key);
}
@@ -337,8 +337,8 @@
/** @hide */
public boolean isEmptyFrame() {
- boolean empty = (0 == intValues.size());
- empty &= (0 == floatValues.size());
+ boolean empty = (0 == mIntValues.size());
+ empty &= (0 == mFloatValues.size());
if (isFreezeFrame()) empty &= dtc.isEmpty();
return empty;
}
@@ -372,37 +372,42 @@
if (!(otherObject instanceof CarDiagnosticEvent)) {
return false;
}
- CarDiagnosticEvent otherEvent = (CarDiagnosticEvent)otherObject;
- if (otherEvent.frameType != frameType)
+ CarDiagnosticEvent otherEvent = (CarDiagnosticEvent) otherObject;
+ if (otherEvent.frameType != frameType) {
return false;
- if (otherEvent.timestamp != timestamp)
+ }
+ if (otherEvent.timestamp != timestamp) {
return false;
- if (otherEvent.intValues.size() != intValues.size())
+ }
+ if (otherEvent.mIntValues.size() != mIntValues.size()) {
return false;
- if (otherEvent.floatValues.size() != floatValues.size())
+ }
+ if (otherEvent.mFloatValues.size() != mFloatValues.size()) {
return false;
- if (!Objects.equals(dtc, otherEvent.dtc))
+ }
+ if (!Objects.equals(dtc, otherEvent.dtc)) {
return false;
- for (int i = 0; i < intValues.size(); ++i) {
- int key = intValues.keyAt(i);
- int otherKey = otherEvent.intValues.keyAt(i);
+ }
+ for (int i = 0; i < mIntValues.size(); ++i) {
+ int key = mIntValues.keyAt(i);
+ int otherKey = otherEvent.mIntValues.keyAt(i);
if (key != otherKey) {
return false;
}
- int value = intValues.valueAt(i);
- int otherValue = otherEvent.intValues.valueAt(i);
+ int value = mIntValues.valueAt(i);
+ int otherValue = otherEvent.mIntValues.valueAt(i);
if (value != otherValue) {
return false;
}
}
- for (int i = 0; i < floatValues.size(); ++i) {
- int key = floatValues.keyAt(i);
- int otherKey = otherEvent.floatValues.keyAt(i);
+ for (int i = 0; i < mFloatValues.size(); ++i) {
+ int key = mFloatValues.keyAt(i);
+ int otherKey = otherEvent.mFloatValues.keyAt(i);
if (key != otherKey) {
return false;
}
- float value = floatValues.valueAt(i);
- float otherValue = otherEvent.floatValues.valueAt(i);
+ float value = mFloatValues.valueAt(i);
+ float otherValue = otherEvent.mFloatValues.valueAt(i);
if (value != otherValue) {
return false;
}
@@ -412,22 +417,22 @@
@Override
public int hashCode() {
- Integer[] intKeys = new Integer[intValues.size()];
- Integer[] floatKeys = new Integer[floatValues.size()];
+ Integer[] intKeys = new Integer[mIntValues.size()];
+ Integer[] floatKeys = new Integer[mFloatValues.size()];
Integer[] intValues = new Integer[intKeys.length];
Float[] floatValues = new Float[floatKeys.length];
for (int i = 0; i < intKeys.length; ++i) {
- intKeys[i] = this.intValues.keyAt(i);
- intValues[i] = this.intValues.valueAt(i);
+ intKeys[i] = mIntValues.keyAt(i);
+ intValues[i] = mIntValues.valueAt(i);
}
for (int i = 0; i < floatKeys.length; ++i) {
- floatKeys[i] = this.floatValues.keyAt(i);
- floatValues[i] = this.floatValues.valueAt(i);
+ floatKeys[i] = mFloatValues.keyAt(i);
+ floatValues[i] = mFloatValues.valueAt(i);
}
- int intKeysHash = Objects.hash((Object[])intKeys);
- int intValuesHash = Objects.hash((Object[])intValues);
- int floatKeysHash = Objects.hash((Object[])floatKeys);
- int floatValuesHash = Objects.hash((Object[])floatValues);
+ int intKeysHash = Objects.hash((Object[]) intKeys);
+ int intValuesHash = Objects.hash((Object[]) intValues);
+ int floatKeysHash = Objects.hash((Object[]) floatKeys);
+ int floatValuesHash = Objects.hash((Object[]) floatValues);
return Objects.hash(frameType,
timestamp,
dtc,
@@ -443,13 +448,13 @@
"%s diagnostic frame {\n"
+ "\ttimestamp: %d, "
+ "DTC: %s\n"
- + "\tintValues: %s\n"
- + "\tfloatValues: %s\n}",
+ + "\tmIntValues: %s\n"
+ + "\tmFloatValues: %s\n}",
isLiveFrame() ? "live" : "freeze",
timestamp,
dtc,
- intValues.toString(),
- floatValues.toString());
+ mIntValues.toString(),
+ mFloatValues.toString());
}
/**
@@ -458,7 +463,7 @@
*/
public int getSystemIntegerSensor(
@android.car.diagnostic.IntegerSensorIndex.SensorIndex int sensor, int defaultValue) {
- return intValues.get(sensor, defaultValue);
+ return mIntValues.get(sensor, defaultValue);
}
/**
@@ -467,7 +472,7 @@
*/
public float getSystemFloatSensor(
@android.car.diagnostic.FloatSensorIndex.SensorIndex int sensor, float defaultValue) {
- return floatValues.get(sensor, defaultValue);
+ return mFloatValues.get(sensor, defaultValue);
}
/**
@@ -475,7 +480,7 @@
* Returns defaultValue otherwise.
*/
public int getVendorIntegerSensor(int sensor, int defaultValue) {
- return intValues.get(sensor, defaultValue);
+ return mIntValues.get(sensor, defaultValue);
}
/**
@@ -483,7 +488,7 @@
* Returns defaultValue otherwise.
*/
public float getVendorFloatSensor(int sensor, float defaultValue) {
- return floatValues.get(sensor, defaultValue);
+ return mFloatValues.get(sensor, defaultValue);
}
/**
@@ -492,9 +497,9 @@
*/
public @Nullable Integer getSystemIntegerSensor(
@android.car.diagnostic.IntegerSensorIndex.SensorIndex int sensor) {
- int index = intValues.indexOfKey(sensor);
+ int index = mIntValues.indexOfKey(sensor);
if (index < 0) return null;
- return intValues.valueAt(index);
+ return mIntValues.valueAt(index);
}
/**
@@ -503,9 +508,9 @@
*/
public @Nullable Float getSystemFloatSensor(
@android.car.diagnostic.FloatSensorIndex.SensorIndex int sensor) {
- int index = floatValues.indexOfKey(sensor);
+ int index = mFloatValues.indexOfKey(sensor);
if (index < 0) return null;
- return floatValues.valueAt(index);
+ return mFloatValues.valueAt(index);
}
/**
@@ -513,9 +518,9 @@
* Returns null otherwise.
*/
public @Nullable Integer getVendorIntegerSensor(int sensor) {
- int index = intValues.indexOfKey(sensor);
+ int index = mIntValues.indexOfKey(sensor);
if (index < 0) return null;
- return intValues.valueAt(index);
+ return mIntValues.valueAt(index);
}
/**
@@ -523,9 +528,9 @@
* Returns null otherwise.
*/
public @Nullable Float getVendorFloatSensor(int sensor) {
- int index = floatValues.indexOfKey(sensor);
+ int index = mFloatValues.indexOfKey(sensor);
if (index < 0) return null;
- return floatValues.valueAt(index);
+ return mFloatValues.valueAt(index);
}
/**
@@ -658,6 +663,9 @@
mIncompleteBitmask = incompleteBitmask;
}
+ /**
+ * Returns the {@link IgnitionMonitor} associated with the value passed as parameter.
+ */
public IgnitionMonitor fromValue(int value) {
boolean available = (0 != (value & mAvailableBitmask));
boolean incomplete = (0 != (value & mIncompleteBitmask));
@@ -721,8 +729,9 @@
* Returns null otherwise.
*/
public @Nullable CompressionIgnitionMonitors asCompressionIgnitionMonitors() {
- if (this instanceof CompressionIgnitionMonitors)
+ if (this instanceof CompressionIgnitionMonitors) {
return (CompressionIgnitionMonitors) this;
+ }
return null;
}
}
@@ -907,7 +916,8 @@
* Returns null otherwise.
*/
public @Nullable @SecondaryAirStatus.Status Integer getSecondaryAirStatus() {
- return getSystemIntegerSensor(android.car.diagnostic.IntegerSensorIndex.COMMANDED_SECONDARY_AIR_STATUS);
+ return getSystemIntegerSensor(
+ android.car.diagnostic.IntegerSensorIndex.COMMANDED_SECONDARY_AIR_STATUS);
}
/**
@@ -916,9 +926,11 @@
*/
public @Nullable CommonIgnitionMonitors getIgnitionMonitors() {
Integer ignitionMonitorsType =
- getSystemIntegerSensor(android.car.diagnostic.IntegerSensorIndex.IGNITION_MONITORS_SUPPORTED);
+ getSystemIntegerSensor(
+ android.car.diagnostic.IntegerSensorIndex.IGNITION_MONITORS_SUPPORTED);
Integer ignitionMonitorsBitmask =
- getSystemIntegerSensor(android.car.diagnostic.IntegerSensorIndex.IGNITION_SPECIFIC_MONITORS);
+ getSystemIntegerSensor(
+ android.car.diagnostic.IntegerSensorIndex.IGNITION_SPECIFIC_MONITORS);
if (null == ignitionMonitorsType) return null;
if (null == ignitionMonitorsBitmask) return null;
switch (ignitionMonitorsType) {
diff --git a/car-lib/src/android/car/diagnostic/CarDiagnosticManager.java b/car-lib/src/android/car/diagnostic/CarDiagnosticManager.java
index 8c2f8e3..9799707 100644
--- a/car-lib/src/android/car/diagnostic/CarDiagnosticManager.java
+++ b/car-lib/src/android/car/diagnostic/CarDiagnosticManager.java
@@ -54,7 +54,7 @@
public @interface FrameType {}
/** @hide */
- public static final @FrameType int FRAME_TYPES[] = {
+ public static final @FrameType int[] FRAME_TYPES = {
FRAME_TYPE_LIVE,
FRAME_TYPE_FREEZE
};
@@ -95,7 +95,7 @@
@Override
public void onCarDisconnected() {
- synchronized(mActiveListeners) {
+ synchronized (mActiveListeners) {
mActiveListeners.clear();
}
}
@@ -107,7 +107,7 @@
*
* @param carDiagnosticEvent
*/
- void onDiagnosticEvent(final CarDiagnosticEvent carDiagnosticEvent);
+ void onDiagnosticEvent(CarDiagnosticEvent carDiagnosticEvent);
}
// OnDiagnosticEventListener registration
@@ -134,7 +134,7 @@
public boolean registerListener(
OnDiagnosticEventListener listener, @FrameType int frameType, int rate) {
assertFrameType(frameType);
- synchronized(mActiveListeners) {
+ synchronized (mActiveListeners) {
boolean needsServerUpdate = false;
CarDiagnosticListeners listeners = mActiveListeners.get(frameType);
if (listeners == null) {
@@ -159,8 +159,8 @@
* @param listener
*/
public void unregisterListener(OnDiagnosticEventListener listener) {
- synchronized(mActiveListeners) {
- for(@FrameType int frameType : FRAME_TYPES) {
+ synchronized (mActiveListeners) {
+ for (@FrameType int frameType : FRAME_TYPES) {
doUnregisterListenerLocked(listener, frameType);
}
}
@@ -177,7 +177,7 @@
if (listeners.isEmpty()) {
try {
mService.unregisterDiagnosticListener(frameType,
- mListenerToService);
+ mListenerToService);
} catch (RemoteException e) {
handleRemoteExceptionFromCarService(e);
// continue for local clean-up
@@ -340,12 +340,12 @@
extends Stub {
private final WeakReference<CarDiagnosticManager> mManager;
- public CarDiagnosticEventListenerToService(CarDiagnosticManager manager) {
+ CarDiagnosticEventListenerToService(CarDiagnosticManager manager) {
mManager = new WeakReference<>(manager);
}
private void handleOnDiagnosticEvents(CarDiagnosticManager manager,
- List<CarDiagnosticEvent> events) {
+ List<CarDiagnosticEvent> events) {
manager.mHandlerCallback.sendEvents(events);
}
@@ -372,8 +372,8 @@
}
mLastUpdateTime = updateTime;
final boolean hasVendorExtensionPermission = mVendorExtensionPermission.checkGranted();
- final CarDiagnosticEvent eventToDispatch = hasVendorExtensionPermission ?
- event :
+ final CarDiagnosticEvent eventToDispatch = hasVendorExtensionPermission
+ ? event :
event.withVendorSensorsRemoved();
List<OnDiagnosticEventListener> listeners;
synchronized (mActiveListeners) {
diff --git a/car-lib/src/android/car/drivingstate/CarDrivingStateEvent.java b/car-lib/src/android/car/drivingstate/CarDrivingStateEvent.java
index bd553ce..db2cf55 100644
--- a/car-lib/src/android/car/drivingstate/CarDrivingStateEvent.java
+++ b/car-lib/src/android/car/drivingstate/CarDrivingStateEvent.java
@@ -84,16 +84,19 @@
dest.writeLong(timeStamp);
}
- public static final Parcelable.Creator<CarDrivingStateEvent> CREATOR
- = new Parcelable.Creator<CarDrivingStateEvent>() {
- public CarDrivingStateEvent createFromParcel(Parcel in) {
- return new CarDrivingStateEvent(in);
- }
+ public static final Parcelable.Creator<CarDrivingStateEvent> CREATOR =
+ new Parcelable.Creator<CarDrivingStateEvent>() {
- public CarDrivingStateEvent[] newArray(int size) {
- return new CarDrivingStateEvent[size];
- }
- };
+ @Override
+ public CarDrivingStateEvent createFromParcel(Parcel in) {
+ return new CarDrivingStateEvent(in);
+ }
+
+ @Override
+ public CarDrivingStateEvent[] newArray(int size) {
+ return new CarDrivingStateEvent[size];
+ }
+ };
public CarDrivingStateEvent(int value, long time) {
eventValue = value;
diff --git a/car-lib/src/android/car/hardware/CarSensorConfig.java b/car-lib/src/android/car/hardware/CarSensorConfig.java
index 77f8dc5..4910def 100644
--- a/car-lib/src/android/car/hardware/CarSensorConfig.java
+++ b/car-lib/src/android/car/hardware/CarSensorConfig.java
@@ -19,7 +19,6 @@
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
-import java.util.ArrayList;
/**
* A CarSensorConfig object corresponds to a single sensor type coming from the car.
@@ -28,20 +27,20 @@
public class CarSensorConfig implements Parcelable {
/** List of property specific mapped elements in bundle for WHEEL_TICK_DISTANCE sensor*/
/** @hide */
- public final static String WHEEL_TICK_DISTANCE_SUPPORTED_WHEELS =
- "android.car.wheelTickDistanceSupportedWheels";
+ public static final String WHEEL_TICK_DISTANCE_SUPPORTED_WHEELS =
+ "android.car.wheelTickDistanceSupportedWheels";
/** @hide */
- public final static String WHEEL_TICK_DISTANCE_FRONT_LEFT_UM_PER_TICK =
- "android.car.wheelTickDistanceFrontLeftUmPerTick";
+ public static final String WHEEL_TICK_DISTANCE_FRONT_LEFT_UM_PER_TICK =
+ "android.car.wheelTickDistanceFrontLeftUmPerTick";
/** @hide */
- public final static String WHEEL_TICK_DISTANCE_FRONT_RIGHT_UM_PER_TICK =
- "android.car.wheelTickDistanceFrontRightUmPerTick";
+ public static final String WHEEL_TICK_DISTANCE_FRONT_RIGHT_UM_PER_TICK =
+ "android.car.wheelTickDistanceFrontRightUmPerTick";
/** @hide */
- public final static String WHEEL_TICK_DISTANCE_REAR_RIGHT_UM_PER_TICK =
- "android.car.wheelTickDistanceRearRightUmPerTick";
+ public static final String WHEEL_TICK_DISTANCE_REAR_RIGHT_UM_PER_TICK =
+ "android.car.wheelTickDistanceRearRightUmPerTick";
/** @hide */
- public final static String WHEEL_TICK_DISTANCE_REAR_LEFT_UM_PER_TICK =
- "android.car.wheelTickDistanceRearLeftUmPerTick";
+ public static final String WHEEL_TICK_DISTANCE_REAR_LEFT_UM_PER_TICK =
+ "android.car.wheelTickDistanceRearLeftUmPerTick";
/** Config data stored in Bundle */
private final Bundle mConfig;
@@ -67,16 +66,19 @@
}
/** @hide */
- public static final Parcelable.Creator<CarSensorConfig> CREATOR
- = new Parcelable.Creator<CarSensorConfig>() {
- public CarSensorConfig createFromParcel(Parcel in) {
- return new CarSensorConfig(in);
- }
+ public static final Parcelable.Creator<CarSensorConfig> CREATOR =
+ new Parcelable.Creator<CarSensorConfig>() {
- public CarSensorConfig[] newArray(int size) {
- return new CarSensorConfig[size];
- }
- };
+ @Override
+ public CarSensorConfig createFromParcel(Parcel in) {
+ return new CarSensorConfig(in);
+ }
+
+ @Override
+ public CarSensorConfig[] newArray(int size) {
+ return new CarSensorConfig[size];
+ }
+ };
/** @hide */
public CarSensorConfig(int type, Bundle b) {
@@ -101,10 +103,9 @@
public int getInt(String key) {
if (mConfig.containsKey(key)) {
return mConfig.getInt(key);
- } else {
- throw new IllegalArgumentException("SensorType " + mType +
- " does not contain key: " + key);
}
+ throw new IllegalArgumentException("SensorType " + mType
+ + " does not contain key: " + key);
}
/** @hide */
diff --git a/car-lib/src/android/car/hardware/property/CarPropertyEvent.java b/car-lib/src/android/car/hardware/property/CarPropertyEvent.java
index c423c2f..4d5498d 100644
--- a/car-lib/src/android/car/hardware/property/CarPropertyEvent.java
+++ b/car-lib/src/android/car/hardware/property/CarPropertyEvent.java
@@ -42,12 +42,16 @@
/**
* @return EventType field
*/
- public int getEventType() { return mEventType; }
+ public int getEventType() {
+ return mEventType;
+ }
/**
* Returns {@link CarPropertyValue} associated with this event.
*/
- public CarPropertyValue<?> getCarPropertyValue() { return mCarPropertyValue; }
+ public CarPropertyValue<?> getCarPropertyValue() {
+ return mCarPropertyValue;
+ }
@Override
public int describeContents() {
@@ -61,16 +65,19 @@
dest.writeParcelable(mCarPropertyValue, flags);
}
- public static final Parcelable.Creator<CarPropertyEvent> CREATOR
- = new Parcelable.Creator<CarPropertyEvent>() {
+ public static final Parcelable.Creator<CarPropertyEvent> CREATOR =
+ new Parcelable.Creator<CarPropertyEvent>() {
+
+ @Override
public CarPropertyEvent createFromParcel(Parcel in) {
return new CarPropertyEvent(in);
}
+ @Override
public CarPropertyEvent[] newArray(int size) {
return new CarPropertyEvent[size];
}
- };
+ };
/**
* Constructor for {@link CarPropertyEvent}.
diff --git a/car-lib/src/android/car/settings/CarSettings.java b/car-lib/src/android/car/settings/CarSettings.java
index e9af8eb..ef78ff6 100644
--- a/car-lib/src/android/car/settings/CarSettings.java
+++ b/car-lib/src/android/car/settings/CarSettings.java
@@ -1,17 +1,17 @@
/*
* Copyright (C) 2016 The Android Open Source Project
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * 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
+ * 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.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package android.car.settings;
diff --git a/car-lib/src/android/car/user/CarUserManager.java b/car-lib/src/android/car/user/CarUserManager.java
index 784ee48..c7fab76 100644
--- a/car-lib/src/android/car/user/CarUserManager.java
+++ b/car-lib/src/android/car/user/CarUserManager.java
@@ -18,7 +18,6 @@
import static android.Manifest.permission.INTERACT_ACROSS_USERS;
import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL;
-import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.os.Process.myUid;
import android.annotation.CallbackExecutor;
@@ -32,7 +31,6 @@
import android.car.Car;
import android.car.CarManagerBase;
import android.car.ICarUserService;
-import android.content.Context;
import android.content.pm.UserInfo;
import android.os.Bundle;
import android.os.IBinder;
@@ -54,7 +52,9 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.util.Arrays;
import java.util.List;
+import java.util.Objects;
import java.util.concurrent.Executor;
/**
@@ -69,8 +69,7 @@
private static final String TAG = CarUserManager.class.getSimpleName();
private static final int HAL_TIMEOUT_MS = CarProperties.user_hal_timeout().orElse(5_000);
- // TODO(b/144120654): STOPSHIP - set to false
- private static final boolean DBG = true;
+ private static final boolean DBG = false;
/**
* {@link UserLifecycleEvent} called when the user is starting, for components to initialize
@@ -203,6 +202,7 @@
*/
@RequiresPermission(android.Manifest.permission.MANAGE_USERS)
public AndroidFuture<UserSwitchResult> switchUser(@UserIdInt int targetUserId) {
+ // TODO(b/155311595): add permission check integration test
int uid = myUid();
try {
AndroidFuture<UserSwitchResult> future = new AndroidFuture<UserSwitchResult>() {
@@ -231,6 +231,8 @@
/**
* Adds a listener for {@link UserLifecycleEvent user lifecycle events}.
*
+ * @throws IllegalStateException if the listener was already added.
+ *
* @hide
*/
@SystemApi
@@ -238,15 +240,13 @@
@RequiresPermission(anyOf = {INTERACT_ACROSS_USERS, INTERACT_ACROSS_USERS_FULL})
public void addListener(@NonNull @CallbackExecutor Executor executor,
@NonNull UserLifecycleListener listener) {
- checkInteractAcrossUsersPermission();
-
- // TODO(b/144120654): add unit tests to validate input
- // - executor cannot be null
- // - listener cannot be null
- // - listener must not be added before
+ Objects.requireNonNull(executor, "executor cannot be null");
+ Objects.requireNonNull(listener, "listener cannot be null");
int uid = myUid();
synchronized (mLock) {
+ Preconditions.checkState(mListeners == null || !mListeners.containsKey(listener),
+ "already called for this listener");
if (mReceiver == null) {
mReceiver = new LifecycleResultReceiver();
try {
@@ -271,24 +271,20 @@
/**
* Removes a listener for {@link UserLifecycleEvent user lifecycle events}.
*
+ * @throws IllegalStateException if the listener was not added beforehand.
+ *
* @hide
*/
@SystemApi
@TestApi
@RequiresPermission(anyOf = {INTERACT_ACROSS_USERS, INTERACT_ACROSS_USERS_FULL})
public void removeListener(@NonNull UserLifecycleListener listener) {
- checkInteractAcrossUsersPermission();
+ Objects.requireNonNull(listener, "listener cannot be null");
- // TODO(b/144120654): add unit tests to validate input
- // - listener cannot be null
- // - listener must not be added before
int uid = myUid();
synchronized (mLock) {
- if (mListeners == null) {
- Log.w(TAG, "removeListener(): no listeners for uid " + uid);
- return;
- }
-
+ Preconditions.checkState(mListeners != null && mListeners.containsKey(listener),
+ "not called for this listener yet");
mListeners.remove(listener);
if (!mListeners.isEmpty()) {
@@ -318,14 +314,15 @@
*
* @hide
*/
- @Nullable
+ @NonNull
@RequiresPermission(android.Manifest.permission.MANAGE_USERS)
- public GetUserIdentificationAssociationResponse getUserIdentificationAssociation(
+ public UserIdentificationAssociationResponse getUserIdentificationAssociation(
@NonNull int... types) {
+ // TODO(b/155311595): add permission check integration test
Preconditions.checkArgument(!ArrayUtils.isEmpty(types), "must have at least one type");
EventLog.writeEvent(EventLogTags.CAR_USER_MGR_GET_USER_AUTH_REQ, types.length);
try {
- GetUserIdentificationAssociationResponse response =
+ UserIdentificationAssociationResponse response =
mService.getUserIdentificationAssociation(types);
if (response != null) {
EventLog.writeEvent(EventLogTags.CAR_USER_MGR_GET_USER_AUTH_RESP,
@@ -338,6 +335,60 @@
}
/**
+ * Sets the user authentication types associated with this manager's user.
+ *
+ * @hide
+ */
+ @NonNull
+ public AndroidFuture<UserIdentificationAssociationResponse> setUserIdentificationAssociation(
+ @NonNull int[] types, @NonNull int[] values) {
+ // TODO(b/155311595): add permission check integration test
+ Preconditions.checkArgument(!ArrayUtils.isEmpty(types), "must have at least one type");
+ Preconditions.checkArgument(!ArrayUtils.isEmpty(values), "must have at least one value");
+ if (types.length != values.length) {
+ throw new IllegalArgumentException("types (" + Arrays.toString(types) + ") and values ("
+ + Arrays.toString(values) + ") should have the same length");
+ }
+ // TODO(b/153900032): move this logic to a common helper
+ Object[] loggedValues = new Integer[types.length * 2];
+ for (int i = 0; i < types.length; i++) {
+ loggedValues[i * 2] = types[i];
+ loggedValues[i * 2 + 1 ] = values[i];
+ }
+ EventLog.writeEvent(EventLogTags.CAR_USER_MGR_SET_USER_AUTH_REQ, loggedValues);
+
+ try {
+ AndroidFuture<UserIdentificationAssociationResponse> future =
+ new AndroidFuture<UserIdentificationAssociationResponse>() {
+ @Override
+ protected void onCompleted(UserIdentificationAssociationResponse result,
+ Throwable err) {
+ if (result != null) {
+ int[] rawValues = result.getValues();
+ // TODO(b/153900032): move this logic to a common helper
+ Object[] loggedValues = new Object[rawValues.length];
+ for (int i = 0; i < rawValues.length; i++) {
+ loggedValues[i] = rawValues[i];
+ }
+ EventLog.writeEvent(EventLogTags.CAR_USER_MGR_SET_USER_AUTH_RESP,
+ loggedValues);
+ } else {
+ Log.w(TAG, "setUserIdentificationAssociation(" + Arrays.toString(types)
+ + ", " + Arrays.toString(values) + ") failed: " + err);
+ }
+ super.onCompleted(result, err);
+ };
+ };
+ mService.setUserIdentificationAssociation(HAL_TIMEOUT_MS, types, values, future);
+ return future;
+ } catch (RemoteException e) {
+ AndroidFuture<UserIdentificationAssociationResponse> future = new AndroidFuture<>();
+ future.complete(UserIdentificationAssociationResponse.forFailure());
+ return handleRemoteExceptionFromCarService(e, future);
+ }
+ }
+
+ /**
* Sets a callback to be notified before user switch. It should only be used by Car System UI.
*
* @hide
@@ -431,20 +482,6 @@
}
}
- private void checkInteractAcrossUsersPermission() {
- checkInteractAcrossUsersPermission(getContext());
- }
-
- private static void checkInteractAcrossUsersPermission(Context context) {
- if (context.checkSelfPermission(INTERACT_ACROSS_USERS) != PERMISSION_GRANTED
- && context.checkSelfPermission(INTERACT_ACROSS_USERS_FULL) != PERMISSION_GRANTED) {
- throw new SecurityException(
- "Must have either " + android.Manifest.permission.INTERACT_ACROSS_USERS + " or "
- + android.Manifest.permission.INTERACT_ACROSS_USERS_FULL
- + " permission");
- }
- }
-
// NOTE: this method is called by ExperimentalCarUserManager, so it can get the mService.
// "Real" ExperimentalCarUserManager instances should be obtained through
// ExperimentalCarUserManager.from(mCarUserManager)
diff --git a/car-lib/src/android/car/user/GetUserIdentificationAssociationResponse.java b/car-lib/src/android/car/user/GetUserIdentificationAssociationResponse.java
deleted file mode 100644
index 12bee07..0000000
--- a/car-lib/src/android/car/user/GetUserIdentificationAssociationResponse.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.car.user;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.os.Parcelable;
-
-import com.android.internal.util.DataClass;
-
-/**
- * Results of a {@link CarUserManager#getUserIdentificationAssociation(int[]) request.
- *
- * @hide
- */
-@DataClass(
- genToString = true,
- genHiddenConstructor = true,
- genHiddenConstDefs = true)
-public final class GetUserIdentificationAssociationResponse implements Parcelable {
-
- /**
- * Gets the error message returned by the HAL.
- */
- @Nullable
- private String mErrorMessage;
-
- /**
- * Gets the list of
- * {@link android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationValue}
- * associates with the request.
- */
- @NonNull
- private final int[] mValues;
-
-
-
-
- // Code below generated by codegen v1.0.15.
- //
- // DO NOT MODIFY!
- // CHECKSTYLE:OFF Generated code
- //
- // To regenerate run:
- // $ codegen $ANDROID_BUILD_TOP/packages/services/Car/car-lib/src/android/car/user/GetUserIdentificationAssociationResponse.java
- //
- // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
- // Settings > Editor > Code Style > Formatter Control
- //@formatter:off
-
-
- /**
- * Creates a new GetUserIdentificationAssociationResponse.
- *
- * @param errorMessage
- * Gets the error message returned by the HAL.
- * @param values
- * Gets the list of
- * {@link android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationValue}
- * associates with the request.
- * @hide
- */
- @DataClass.Generated.Member
- public GetUserIdentificationAssociationResponse(
- @Nullable String errorMessage,
- @NonNull int[] values) {
- this.mErrorMessage = errorMessage;
- this.mValues = values;
- com.android.internal.util.AnnotationValidations.validate(
- NonNull.class, null, mValues);
-
- // onConstructed(); // You can define this method to get a callback
- }
-
- /**
- * Gets the error message returned by the HAL.
- */
- @DataClass.Generated.Member
- public @Nullable String getErrorMessage() {
- return mErrorMessage;
- }
-
- /**
- * Gets the list of
- * {@link android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationValue}
- * associates with the request.
- */
- @DataClass.Generated.Member
- public @NonNull int[] getValues() {
- return mValues;
- }
-
- @Override
- @DataClass.Generated.Member
- public String toString() {
- // You can override field toString logic by defining methods like:
- // String fieldNameToString() { ... }
-
- return "GetUserIdentificationAssociationResponse { " +
- "errorMessage = " + mErrorMessage + ", " +
- "values = " + java.util.Arrays.toString(mValues) +
- " }";
- }
-
- @Override
- @DataClass.Generated.Member
- public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
- // You can override field parcelling by defining methods like:
- // void parcelFieldName(Parcel dest, int flags) { ... }
-
- byte flg = 0;
- if (mErrorMessage != null) flg |= 0x1;
- dest.writeByte(flg);
- if (mErrorMessage != null) dest.writeString(mErrorMessage);
- dest.writeIntArray(mValues);
- }
-
- @Override
- @DataClass.Generated.Member
- public int describeContents() { return 0; }
-
- /** @hide */
- @SuppressWarnings({"unchecked", "RedundantCast"})
- @DataClass.Generated.Member
- /* package-private */ GetUserIdentificationAssociationResponse(@NonNull android.os.Parcel in) {
- // You can override field unparcelling by defining methods like:
- // static FieldType unparcelFieldName(Parcel in) { ... }
-
- byte flg = in.readByte();
- String errorMessage = (flg & 0x1) == 0 ? null : in.readString();
- int[] values = in.createIntArray();
-
- this.mErrorMessage = errorMessage;
- this.mValues = values;
- com.android.internal.util.AnnotationValidations.validate(
- NonNull.class, null, mValues);
-
- // onConstructed(); // You can define this method to get a callback
- }
-
- @DataClass.Generated.Member
- public static final @NonNull Parcelable.Creator<GetUserIdentificationAssociationResponse> CREATOR
- = new Parcelable.Creator<GetUserIdentificationAssociationResponse>() {
- @Override
- public GetUserIdentificationAssociationResponse[] newArray(int size) {
- return new GetUserIdentificationAssociationResponse[size];
- }
-
- @Override
- public GetUserIdentificationAssociationResponse createFromParcel(@NonNull android.os.Parcel in) {
- return new GetUserIdentificationAssociationResponse(in);
- }
- };
-
- @DataClass.Generated(
- time = 1587769987549L,
- codegenVersion = "1.0.15",
- sourceFile = "packages/services/Car/car-lib/src/android/car/user/GetUserIdentificationAssociationResponse.java",
- inputSignatures = "private @android.annotation.Nullable java.lang.String mErrorMessage\nprivate final @android.annotation.NonNull int[] mValues\nclass GetUserIdentificationAssociationResponse extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genHiddenConstructor=true, genHiddenConstDefs=true)")
- @Deprecated
- private void __metadata() {}
-
-
- //@formatter:on
- // End of generated code
-
-}
diff --git a/car-lib/src/android/car/user/GetUserIdentificationAssociationResponse.aidl b/car-lib/src/android/car/user/UserIdentificationAssociationResponse.aidl
similarity index 92%
rename from car-lib/src/android/car/user/GetUserIdentificationAssociationResponse.aidl
rename to car-lib/src/android/car/user/UserIdentificationAssociationResponse.aidl
index d8ac0dc..9e292d4 100644
--- a/car-lib/src/android/car/user/GetUserIdentificationAssociationResponse.aidl
+++ b/car-lib/src/android/car/user/UserIdentificationAssociationResponse.aidl
@@ -16,4 +16,4 @@
package android.car.user;
-parcelable GetUserIdentificationAssociationResponse;
+parcelable UserIdentificationAssociationResponse;
diff --git a/car-lib/src/android/car/user/UserIdentificationAssociationResponse.java b/car-lib/src/android/car/user/UserIdentificationAssociationResponse.java
new file mode 100644
index 0000000..d2cdb44
--- /dev/null
+++ b/car-lib/src/android/car/user/UserIdentificationAssociationResponse.java
@@ -0,0 +1,244 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.car.user;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.Parcelable;
+
+import com.android.internal.util.ArrayUtils;
+import com.android.internal.util.DataClass;
+import com.android.internal.util.Preconditions;
+
+import java.util.Objects;
+
+/**
+ * Results of a {@link CarUserManager#getUserIdentificationAssociation(int[]) request.
+ *
+ * @hide
+ */
+@DataClass(
+ genToString = true,
+ genHiddenConstructor = false,
+ genHiddenConstDefs = true)
+public final class UserIdentificationAssociationResponse implements Parcelable {
+
+ /**
+ * Whether the request was successful.
+ *
+ * <p>A successful option has non-null {@link #getValues()}
+ */
+ private final boolean mSuccess;
+
+ /**
+ * Gets the error message returned by the HAL.
+ */
+ @Nullable
+ private final String mErrorMessage;
+
+ /**
+ * Gets the list of values associated with the request.
+ *
+ * <p><b>NOTE: </b>It's only set when the response is {@link #isSuccess() successful}.
+ *
+ * <p>For {@link CarUserManager#getUserIdentificationAssociation(int...)}, the values are
+ * defined on
+ * {@link android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationValue}.
+ *
+ * <p>For {@link CarUserManager#setUserIdentificationAssociation(int...)}, the values are
+ * defined on
+ * {@link android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationSetValue}.
+ */
+ @Nullable
+ private final int[] mValues;
+
+ private UserIdentificationAssociationResponse(
+ boolean success,
+ @Nullable String errorMessage,
+ @Nullable int[] values) {
+ this.mSuccess = success;
+ this.mErrorMessage = errorMessage;
+ this.mValues = values;
+ }
+
+ /**
+ * Factory method for failed UserIdentificationAssociationResponse requests.
+ */
+ @NonNull
+ public static UserIdentificationAssociationResponse forFailure() {
+ return forFailure(/* errorMessage= */ null);
+ }
+
+ /**
+ * Factory method for failed UserIdentificationAssociationResponse requests.
+ */
+ @NonNull
+ public static UserIdentificationAssociationResponse forFailure(@Nullable String errorMessage) {
+ return new UserIdentificationAssociationResponse(/* success= */ false,
+ errorMessage, /* values= */ null);
+ }
+
+ /**
+ * Factory method for successful UserIdentificationAssociationResponse requests.
+ */
+ @NonNull
+ public static UserIdentificationAssociationResponse forSuccess(@NonNull int[] values) {
+ Preconditions.checkArgument(!ArrayUtils.isEmpty(values), "must have at least one value");
+ return new UserIdentificationAssociationResponse(/* success= */ true,
+ /* errorMessage= */ null, Objects.requireNonNull(values));
+ }
+
+ /**
+ * Factory method for successful UserIdentificationAssociationResponse requests.
+ */
+ @NonNull
+ public static UserIdentificationAssociationResponse forSuccess(@NonNull int[] values,
+ @Nullable String errorMessage) {
+ Preconditions.checkArgument(!ArrayUtils.isEmpty(values), "must have at least one value");
+ return new UserIdentificationAssociationResponse(/* success= */ true,
+ errorMessage, Objects.requireNonNull(values));
+ }
+
+
+
+ // Code below generated by codegen v1.0.15.
+ //
+ // DO NOT MODIFY!
+ // CHECKSTYLE:OFF Generated code
+ //
+ // To regenerate run:
+ // $ codegen $ANDROID_BUILD_TOP/packages/services/Car/car-lib/src/android/car/user/UserIdentificationAssociationResponse.java
+ //
+ // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
+ // Settings > Editor > Code Style > Formatter Control
+ //@formatter:off
+
+
+ /**
+ * Whether the request was successful.
+ *
+ * <p>A successful option has non-null {@link #getValues()}
+ */
+ @DataClass.Generated.Member
+ public boolean isSuccess() {
+ return mSuccess;
+ }
+
+ /**
+ * Gets the error message returned by the HAL.
+ */
+ @DataClass.Generated.Member
+ public @Nullable String getErrorMessage() {
+ return mErrorMessage;
+ }
+
+ /**
+ * Gets the list of values associated with the request.
+ *
+ * <p><b>NOTE: </b>It's only set when the response is {@link #isSuccess() successful}.
+ *
+ * <p>For {@link CarUserManager#getUserIdentificationAssociation(int...)}, the values are
+ * defined on
+ * {@link android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationValue}.
+ *
+ * <p>For {@link CarUserManager#setUserIdentificationAssociation(int...)}, the values are
+ * defined on
+ * {@link android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationSetValue}.
+ */
+ @DataClass.Generated.Member
+ public @Nullable int[] getValues() {
+ return mValues;
+ }
+
+ @Override
+ @DataClass.Generated.Member
+ public String toString() {
+ // You can override field toString logic by defining methods like:
+ // String fieldNameToString() { ... }
+
+ return "UserIdentificationAssociationResponse { " +
+ "success = " + mSuccess + ", " +
+ "errorMessage = " + mErrorMessage + ", " +
+ "values = " + java.util.Arrays.toString(mValues) +
+ " }";
+ }
+
+ @Override
+ @DataClass.Generated.Member
+ public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
+ // You can override field parcelling by defining methods like:
+ // void parcelFieldName(Parcel dest, int flags) { ... }
+
+ byte flg = 0;
+ if (mSuccess) flg |= 0x1;
+ if (mErrorMessage != null) flg |= 0x2;
+ if (mValues != null) flg |= 0x4;
+ dest.writeByte(flg);
+ if (mErrorMessage != null) dest.writeString(mErrorMessage);
+ if (mValues != null) dest.writeIntArray(mValues);
+ }
+
+ @Override
+ @DataClass.Generated.Member
+ public int describeContents() { return 0; }
+
+ /** @hide */
+ @SuppressWarnings({"unchecked", "RedundantCast"})
+ @DataClass.Generated.Member
+ /* package-private */ UserIdentificationAssociationResponse(@NonNull android.os.Parcel in) {
+ // You can override field unparcelling by defining methods like:
+ // static FieldType unparcelFieldName(Parcel in) { ... }
+
+ byte flg = in.readByte();
+ boolean success = (flg & 0x1) != 0;
+ String errorMessage = (flg & 0x2) == 0 ? null : in.readString();
+ int[] values = (flg & 0x4) == 0 ? null : in.createIntArray();
+
+ this.mSuccess = success;
+ this.mErrorMessage = errorMessage;
+ this.mValues = values;
+
+ // onConstructed(); // You can define this method to get a callback
+ }
+
+ @DataClass.Generated.Member
+ public static final @NonNull Parcelable.Creator<UserIdentificationAssociationResponse> CREATOR
+ = new Parcelable.Creator<UserIdentificationAssociationResponse>() {
+ @Override
+ public UserIdentificationAssociationResponse[] newArray(int size) {
+ return new UserIdentificationAssociationResponse[size];
+ }
+
+ @Override
+ public UserIdentificationAssociationResponse createFromParcel(@NonNull android.os.Parcel in) {
+ return new UserIdentificationAssociationResponse(in);
+ }
+ };
+
+ @DataClass.Generated(
+ time = 1588982917194L,
+ codegenVersion = "1.0.15",
+ sourceFile = "packages/services/Car/car-lib/src/android/car/user/UserIdentificationAssociationResponse.java",
+ inputSignatures = "private final boolean mSuccess\nprivate final @android.annotation.Nullable java.lang.String mErrorMessage\nprivate final @android.annotation.Nullable int[] mValues\npublic static @android.annotation.NonNull android.car.user.UserIdentificationAssociationResponse forFailure()\npublic static @android.annotation.NonNull android.car.user.UserIdentificationAssociationResponse forFailure(java.lang.String)\npublic static @android.annotation.NonNull android.car.user.UserIdentificationAssociationResponse forSuccess(int[])\npublic static @android.annotation.NonNull android.car.user.UserIdentificationAssociationResponse forSuccess(int[],java.lang.String)\nclass UserIdentificationAssociationResponse extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genHiddenConstructor=false, genHiddenConstDefs=true)")
+ @Deprecated
+ private void __metadata() {}
+
+
+ //@formatter:on
+ // End of generated code
+
+}
diff --git a/car-test-lib/src/android/car/test/mocks/AbstractExtendedMockitoTestCase.java b/car-test-lib/src/android/car/test/mocks/AbstractExtendedMockitoTestCase.java
index 8dc2626..ce96060 100644
--- a/car-test-lib/src/android/car/test/mocks/AbstractExtendedMockitoTestCase.java
+++ b/car-test-lib/src/android/car/test/mocks/AbstractExtendedMockitoTestCase.java
@@ -28,12 +28,15 @@
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
+import android.os.Trace;
import android.os.UserManager;
import android.provider.Settings;
import android.util.Log;
import android.util.Slog;
+import android.util.TimingsTraceLog;
import com.android.dx.mockito.inline.extended.StaticMockitoSessionBuilder;
import com.android.internal.util.Preconditions;
@@ -48,6 +51,7 @@
import org.mockito.invocation.InvocationOnMock;
import org.mockito.quality.Strictness;
import org.mockito.session.MockitoSessionBuilder;
+import org.mockito.stubbing.Answer;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
@@ -90,30 +94,51 @@
private MockitoSession mSession;
private MockSettings mSettings;
+ @Nullable
+ private final TimingsTraceLog mTracer;
+
@Rule
public final WtfCheckerRule mWtfCheckerRule = new WtfCheckerRule();
+ protected AbstractExtendedMockitoTestCase() {
+ mTracer = VERBOSE ? new TimingsTraceLog(TAG, Trace.TRACE_TAG_APP) : null;
+ }
+
@Before
public final void startSession() {
- if (VERBOSE) Log.v(TAG, getLogPrefix() + "startSession()");
+ beginTrace("startSession()");
+
+ beginTrace("startMocking()");
mSession = newSessionBuilder().startMocking();
+ endTrace();
+
+ beginTrace("MockSettings()");
mSettings = new MockSettings();
+ endTrace();
+
+ beginTrace("interceptWtfCalls()");
interceptWtfCalls();
+ endTrace();
+
+ endTrace(); // startSession
}
@After
public final void finishSession() {
- if (VERBOSE) Log.v(TAG, getLogPrefix() + "finishSession()");
+ beginTrace("finishSession()");
if (mSession != null) {
+ beginTrace("finishMocking()");
mSession.finishMocking();
+ endTrace();
}
+ endTrace();
}
/**
* Adds key-value(int) pair in mocked Settings.Global and Settings.Secure
*/
protected void putSettingsInt(@NonNull String key, int value) {
- mSettings.insertInt(key, value);
+ mSettings.insertObject(key, value);
}
/**
@@ -127,7 +152,7 @@
* Adds key-value(String) pair in mocked Settings.Global and Settings.Secure
*/
protected void putSettingsString(@NonNull String key, @NonNull String value) {
- mSettings.insertString(key, value);
+ mSettings.insertObject(key, value);
}
/**
@@ -170,7 +195,10 @@
protected final void mockGetCurrentUser(@UserIdInt int userId) {
if (VERBOSE) Log.v(TAG, getLogPrefix() + "mockGetCurrentUser(" + userId + ")");
assertSpied(ActivityManager.class);
+
+ beginTrace("mockAmGetCurrentUser-" + userId);
AndroidMockitoHelper.mockAmGetCurrentUser(userId);
+ endTrace();
}
/**
@@ -184,10 +212,42 @@
protected final void mockIsHeadlessSystemUserMode(boolean mode) {
if (VERBOSE) Log.v(TAG, getLogPrefix() + "mockIsHeadlessSystemUserMode(" + mode + ")");
assertSpied(UserManager.class);
+
+ beginTrace("mockUmIsHeadlessSystemUserMode");
AndroidMockitoHelper.mockUmIsHeadlessSystemUserMode(mode);
+ endTrace();
}
- protected void interceptWtfCalls() {
+ /**
+ * Starts a tracing message.
+ *
+ * <p>MUST be followed by a {@link #endTrace()} calls.
+ *
+ * <p>Ignored if {@value #VERBOSE} is {@code false}.
+ */
+ protected final void beginTrace(@NonNull String message) {
+ if (mTracer == null) return;
+
+ Log.d(TAG, getLogPrefix() + message);
+ mTracer.traceBegin(message);
+ }
+
+ /**
+ * Ends a tracing call.
+ *
+ * <p>MUST be called after {@link #beginTrace(String)}.
+ *
+ * <p>Ignored if {@value #VERBOSE} is {@code false}.
+ */
+ protected final void endTrace() {
+ if (mTracer == null) return;
+
+ mTracer.traceEnd();
+ }
+
+
+
+ private void interceptWtfCalls() {
doAnswer((invocation) -> {
return addWtf(invocation);
}).when(() -> Log.wtf(anyString(), anyString()));
@@ -234,6 +294,7 @@
StaticMockitoSessionBuilder builder = mockitoSession()
.strictness(getSessionStrictness())
.mockStatic(Settings.Global.class)
+ .mockStatic(Settings.System.class)
.mockStatic(Settings.Secure.class);
CustomMockitoSessionBuilder customBuilder =
@@ -242,6 +303,9 @@
.spyStatic(Slog.class);
onSessionBuilder(customBuilder);
+
+ if (VERBOSE) Log.v(TAG, "spied classes" + customBuilder.mStaticSpiedClasses);
+
return builder.initMocks(this);
}
@@ -292,20 +356,26 @@
@Override
public void evaluate() throws Throwable {
String testName = description.getMethodName();
-
if (VERBOSE) Log.v(TAG, "running " + testName);
+ beginTrace("evaluate-" + testName);
base.evaluate();
+ endTrace();
Method testMethod = AbstractExtendedMockitoTestCase.this.getClass()
.getMethod(testName);
ExpectWtf expectWtfAnnotation = testMethod.getAnnotation(ExpectWtf.class);
- if (expectWtfAnnotation != null) {
- if (VERBOSE) Log.v(TAG, "expecting wtf()");
- verifyWtfLogged();
- } else {
- if (VERBOSE) Log.v(TAG, "NOT expecting wtf()");
- verifyWtfNeverLogged();
+ beginTrace("verify-wtfs");
+ try {
+ if (expectWtfAnnotation != null) {
+ if (VERBOSE) Log.v(TAG, "expecting wtf()");
+ verifyWtfLogged();
+ } else {
+ if (VERBOSE) Log.v(TAG, "NOT expecting wtf()");
+ verifyWtfNeverLogged();
+ }
+ } finally {
+ endTrace();
}
}
};
@@ -313,70 +383,92 @@
}
// TODO (b/155523104): Add log
+ // TODO (b/156033195): Clean settings API
private static final class MockSettings {
- private HashMap<String, Integer> mIntMapping = new HashMap<String, Integer>();
- private HashMap<String, String> mStringMapping = new HashMap<String, String>();
+ private static final int INVALID_DEFAULT_INDEX = -1;
+ private HashMap<String, Object> mSettingsMapping = new HashMap<>();
MockSettings() {
- when(Settings.Global.putInt(any(), any(), anyInt())).thenAnswer(invocation -> {
- String key = (String) invocation.getArguments()[1];
- int value = (int) invocation.getArguments()[2];
- insertInt(key, value);
- return null;
- });
- when(Settings.Global.getInt(any(), any(), anyInt())).thenAnswer(invocation -> {
- String key = (String) invocation.getArguments()[1];
- int defaultValue = (int) invocation.getArguments()[2];
- return getInt(key, defaultValue);
- });
+ Answer<Object> insertObjectAnswer =
+ invocation -> insertObjectFromInvocation(invocation, 1, 2);
+ Answer<Integer> getIntAnswer = invocation ->
+ getAnswer(invocation, Integer.class, 1, 2);
+ Answer<String> getStringAnswer = invocation ->
+ getAnswer(invocation, String.class, 1, INVALID_DEFAULT_INDEX);
+
+
+ when(Settings.Global.putInt(any(), any(), anyInt())).thenAnswer(insertObjectAnswer);
+
+ when(Settings.Global.getInt(any(), any(), anyInt())).thenAnswer(getIntAnswer);
when(Settings.Secure.putIntForUser(any(), any(), anyInt(), anyInt()))
- .thenAnswer(invocation -> {
- String key = (String) invocation.getArguments()[1];
- int value = (int) invocation.getArguments()[2];
- insertInt(key, value);
- return null;
- });
+ .thenAnswer(insertObjectAnswer);
when(Settings.Secure.getIntForUser(any(), any(), anyInt(), anyInt()))
- .thenAnswer(invocation -> {
- String key = (String) invocation.getArguments()[1];
- int defaultValue = (int) invocation.getArguments()[2];
- return getInt(key, defaultValue);
- });
+ .thenAnswer(getIntAnswer);
- when(Settings.Global.putString(any(), any(), any())).thenAnswer(invocation -> {
- String key = (String) invocation.getArguments()[1];
- String value = (String) invocation.getArguments()[2];
- insertString(key, value);
- return null;
- });
+ when(Settings.Global.putString(any(), any(), any()))
+ .thenAnswer(insertObjectAnswer);
- when(Settings.Global.getString(any(), any())).thenAnswer(invocation -> {
- String key = (String) invocation.getArguments()[1];
- return getString(key);
- });
+ when(Settings.Global.getString(any(), any())).thenAnswer(getStringAnswer);
+
+ when(Settings.System.putIntForUser(any(), any(), anyInt(), anyInt()))
+ .thenAnswer(insertObjectAnswer);
+
+ when(Settings.System.getIntForUser(any(), any(), anyInt(), anyInt()))
+ .thenAnswer(getIntAnswer);
}
- public void insertInt(String key, int value) {
- mIntMapping.put(key, value);
+ private Object insertObjectFromInvocation(InvocationOnMock invocation,
+ int keyIndex, int valueIndex) {
+ String key = (String) invocation.getArguments()[keyIndex];
+ Object value = invocation.getArguments()[valueIndex];
+ insertObject(key, value);
+ return null;
+ }
+
+ private void insertObject(String key, Object value) {
+ if (VERBOSE) Log.v(TAG, "Inserting Setting " + key + ": " + value);
+ mSettingsMapping.put(key, value);
+ }
+
+ private <T> T getAnswer(InvocationOnMock invocation, Class<T> clazz,
+ int keyIndex, int defaultValueIndex) {
+ String key = (String) invocation.getArguments()[keyIndex];
+ T defaultValue = null;
+ if (defaultValueIndex > INVALID_DEFAULT_INDEX) {
+ defaultValue = safeCast(invocation.getArguments()[defaultValueIndex], clazz);
+ }
+ return get(key, defaultValue, clazz);
+ }
+
+ @Nullable
+ private <T> T get(String key, T defaultValue, Class<T> clazz) {
+ if (VERBOSE) Log.v(TAG, "Getting Setting " + key);
+ Object value = mSettingsMapping.get(key);
+ if (value == null) {
+ return defaultValue;
+ }
+ return safeCast(value, clazz);
+ }
+
+ private static <T> T safeCast(Object value, Class<T> clazz) {
+ if (value == null) {
+ return null;
+ }
+ Preconditions.checkArgument(value.getClass() == clazz,
+ "Setting value has class %s but requires class %s",
+ value.getClass(), clazz);
+ return clazz.cast(value);
+ }
+
+ private String getString(String key) {
+ return get(key, null, String.class);
}
public int getInt(String key) {
- return mIntMapping.get(key);
- }
-
- public int getInt(String key, int defaultValue) {
- return mIntMapping.getOrDefault(key, defaultValue);
- }
-
- public void insertString(String key, String value) {
- mStringMapping.put(key, value);
- }
-
- public String getString(String key) {
- return mStringMapping.get(key);
+ return get(key, null, Integer.class);
}
}
diff --git a/car-test-lib/src/android/car/test/mocks/AndroidMockitoHelper.java b/car-test-lib/src/android/car/test/mocks/AndroidMockitoHelper.java
index 4a26391..cd6028c 100644
--- a/car-test-lib/src/android/car/test/mocks/AndroidMockitoHelper.java
+++ b/car-test-lib/src/android/car/test/mocks/AndroidMockitoHelper.java
@@ -29,6 +29,7 @@
import android.os.IBinder;
import android.os.IInterface;
import android.os.ServiceManager;
+import android.os.UserHandle;
import android.os.UserManager;
import java.util.Arrays;
@@ -75,10 +76,27 @@
public static UserInfo mockUmGetUserInfo(@NonNull UserManager um, @UserIdInt int userId,
@UserInfoFlag int flags) {
Objects.requireNonNull(um);
- UserInfo userInfo = new UserTestingHelper.UserInfoBuilder(userId).setFlags(flags).build();
- when(um.getUserInfo(userId)).thenReturn(userInfo);
+ UserInfo user = new UserTestingHelper.UserInfoBuilder(userId).setFlags(flags).build();
+ mockUmGetUserInfo(um, user);
+ return user;
+ }
- return userInfo;
+ /**
+ * Mocks {@code UserManager.getUserInfo(userId)} to return the given {@link UserInfo}.
+ */
+ @NonNull
+ public static void mockUmGetUserInfo(@NonNull UserManager um, @NonNull UserInfo user) {
+ when(um.getUserInfo(user.id)).thenReturn(user);
+ }
+
+ /**
+ * Mocks {@code UserManager.getUserInfo(userId)} when the {@code userId} is the system user's.
+ */
+ @NonNull
+ public static void mockUmGetSystemUser(@NonNull UserManager um) {
+ UserInfo user = new UserTestingHelper.UserInfoBuilder(UserHandle.USER_SYSTEM)
+ .setFlags(UserInfo.FLAG_SYSTEM).build();
+ when(um.getUserInfo(UserHandle.USER_SYSTEM)).thenReturn(user);
}
/**
diff --git a/car-test-lib/src/android/car/test/mocks/CarArgumentMatchers.java b/car-test-lib/src/android/car/test/mocks/CarArgumentMatchers.java
index 62328c0..1d1c399 100644
--- a/car-test-lib/src/android/car/test/mocks/CarArgumentMatchers.java
+++ b/car-test-lib/src/android/car/test/mocks/CarArgumentMatchers.java
@@ -158,6 +158,11 @@
}
return true;
}
+
+ @Override
+ public String toString() {
+ return "prop: " + mProp + " values: " + Arrays.toString(mValues);
+ }
}
private CarArgumentMatchers() {
diff --git a/car-test-lib/src/android/car/test/mocks/JavaMockitoHelper.java b/car-test-lib/src/android/car/test/mocks/JavaMockitoHelper.java
index af50638..ab772a9 100644
--- a/car-test-lib/src/android/car/test/mocks/JavaMockitoHelper.java
+++ b/car-test-lib/src/android/car/test/mocks/JavaMockitoHelper.java
@@ -19,6 +19,7 @@
import android.util.Log;
import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
/**
@@ -33,7 +34,7 @@
*
* @param timeoutMs how long to wait for
*
- * @throws IllegalStateException} if it times out.
+ * @throws {@link IllegalStateException} if it times out.
*/
public static void await(@NonNull CountDownLatch latch, long timeoutMs)
throws InterruptedException {
@@ -43,6 +44,20 @@
}
/**
+ * Waits for a semaphore.
+ *
+ * @param timeoutMs how long to wait for
+ *
+ * @throws {@link IllegalStateException} if it times out.
+ */
+ public static void await(@NonNull Semaphore semaphore, long timeoutMs)
+ throws InterruptedException {
+ if (!semaphore.tryAcquire(timeoutMs, TimeUnit.MILLISECONDS)) {
+ throw new IllegalStateException(semaphore + " not released in " + timeoutMs + " ms");
+ }
+ }
+
+ /**
* Silently waits for a latch to be counted down, without throwing any exception if it isn't.
*
* @param timeoutMs how long to wait for
diff --git a/car-test-lib/src/android/car/testapi/CarMockitoHelper.java b/car-test-lib/src/android/car/testapi/CarMockitoHelper.java
index d69a0f8..13c5361 100644
--- a/car-test-lib/src/android/car/testapi/CarMockitoHelper.java
+++ b/car-test-lib/src/android/car/testapi/CarMockitoHelper.java
@@ -22,12 +22,15 @@
import android.annotation.NonNull;
import android.car.Car;
import android.os.RemoteException;
+import android.util.Log;
/**
* Provides common Mockito calls for Car-specific classes.
*/
public final class CarMockitoHelper {
+ private static final String TAG = CarMockitoHelper.class.getSimpleName();
+
/**
* Mocks a call to {@link Car#handleRemoteExceptionFromCarService(RemoteException, Object)} so
* it returns the passed as 2nd argument.
@@ -35,7 +38,9 @@
public static void mockHandleRemoteExceptionFromCarServiceWithDefaultValue(
@NonNull Car car) {
doAnswer((invocation) -> {
- return invocation.getArguments()[1];
+ Object returnValue = invocation.getArguments()[1];
+ Log.v(TAG, "mocking handleRemoteExceptionFromCarService(): " + returnValue);
+ return returnValue;
}).when(car).handleRemoteExceptionFromCarService(isA(RemoteException.class), any());
}
diff --git a/car_product/build/car.mk b/car_product/build/car.mk
index bc61fca..64d6bec 100644
--- a/car_product/build/car.mk
+++ b/car_product/build/car.mk
@@ -16,8 +16,8 @@
# Common make file for all car builds
-PRODUCT_PUBLIC_SEPOLICY_DIRS += packages/services/Car/car_product/sepolicy/public
-PRODUCT_PRIVATE_SEPOLICY_DIRS += packages/services/Car/car_product/sepolicy/private
+BOARD_PLAT_PUBLIC_SEPOLICY_DIR += packages/services/Car/car_product/sepolicy/public
+BOARD_PLAT_PRIVATE_SEPOLICY_DIR += packages/services/Car/car_product/sepolicy/private
PRODUCT_PACKAGES += \
Bluetooth \
diff --git a/car_product/occupant_awareness/OccupantAwareness.mk b/car_product/occupant_awareness/OccupantAwareness.mk
index 3d27ed8..43d904f 100644
--- a/car_product/occupant_awareness/OccupantAwareness.mk
+++ b/car_product/occupant_awareness/OccupantAwareness.mk
@@ -1,5 +1,7 @@
# Occupant Awareness SELinux policy variable definitions
LOCAL_PATH:= $(call my-dir)
-PRODUCT_PUBLIC_SEPOLICY_DIRS += $(LOCAL_PATH)/sepolicy/public
-PRODUCT_PRIVATE_SEPOLICY_DIRS += $(LOCAL_PATH)/sepolicy/private
+BOARD_PLAT_PUBLIC_SEPOLICY_DIR += $(LOCAL_PATH)/sepolicy/public
+BOARD_PLAT_PRIVATE_SEPOLICY_DIR += $(LOCAL_PATH)/sepolicy/private
+
+BOARD_SEPOLICY_DIRS += $(LOCAL_PATH)/sepolicy
diff --git a/computepipe/OWNERS b/computepipe/OWNERS
index 323a0bc..284dba0 100644
--- a/computepipe/OWNERS
+++ b/computepipe/OWNERS
@@ -1,2 +1,5 @@
hanumantsingh@google.com
ankitarora@google.com
+kathan@google.com
+nyogeshwar@google.com
+michaelkeller@google.com
diff --git a/computepipe/products/computepipe.mk b/computepipe/products/computepipe.mk
index 44c93f9..d5fe7f7 100644
--- a/computepipe/products/computepipe.mk
+++ b/computepipe/products/computepipe.mk
@@ -29,7 +29,7 @@
# Selinux public policies for computepipe services
-PRODUCT_PUBLIC_SEPOLICY_DIRS += packages/services/Car/computepipe/sepolicy/public
+BOARD_PLAT_PUBLIC_SEPOLICY_DIR += packages/services/Car/computepipe/sepolicy/public
# Selinux private policies for computepipe services
-PRODUCT_PRIVATE_SEPOLICY_DIRS += packages/services/Car/computepipe/sepolicy/private
+BOARD_PLAT_PRIVATE_SEPOLICY_DIR += packages/services/Car/computepipe/sepolicy/private
diff --git a/service/res/values-ne/strings.xml b/service/res/values-ne/strings.xml
index ab49c1b..a03753b 100644
--- a/service/res/values-ne/strings.xml
+++ b/service/res/values-ne/strings.xml
@@ -37,25 +37,25 @@
<string name="car_permission_label_radio" msgid="6009465291685935112">"कारको रेडियो व्यवस्थित गर्ने"</string>
<string name="car_permission_desc_radio" msgid="3385999027478186964">"तपाईंको कारको रेडियोमाथि पहुँच राख्ने।"</string>
<string name="car_permission_label_projection" msgid="9107156380287576787">"फोनको इन्टरफेस कारको डिस्प्लेमा प्रोजेक्ट गर्ने"</string>
- <string name="car_permission_desc_projection" msgid="2352178999656292944">"अनुप्रयोगलाई कुनै फोनको इन्टरफेस कारको डिस्प्लेमा प्रोजेक्ट गर्न दिन्छ।"</string>
+ <string name="car_permission_desc_projection" msgid="2352178999656292944">"एपलाई कुनै फोनको इन्टरफेस कारको डिस्प्लेमा प्रोजेक्ट गर्न दिन्छ।"</string>
<string name="car_permission_label_access_projection_status" msgid="4231618890836627402">"प्रोजेक्सनको स्थितिमाथि पहुँच राख्ने"</string>
- <string name="car_permission_desc_access_projection_status" msgid="8497351979100616278">"अनुप्रयोगलाई कारको डिस्प्लेमा प्रोजेक्ट गरिरहेका अन्य अनुप्रयोगहरूको स्थिति प्राप्त गर्ने अनुमति दिन्छ।"</string>
+ <string name="car_permission_desc_access_projection_status" msgid="8497351979100616278">"एपलाई कारको डिस्प्लेमा प्रोजेक्ट गरिरहेका अन्य अनुप्रयोगहरूको स्थिति प्राप्त गर्ने अनुमति दिन्छ।"</string>
<string name="car_permission_label_bind_projection_service" msgid="5362076216606651526">"प्रोजेक्सन सेवामा सम्बद्ध हुने"</string>
<string name="car_permission_desc_bind_projection_service" msgid="2282657787853408639">"धारकलाई प्रोजेक्सन सेवाको उच्च स्तरको इन्टरफेसमा सम्बद्ध हुने अनुमति दिन्छ। साधारण अनुप्रयोगहरूको लागि कहिल्यै पनि आवश्यक पर्दैन।"</string>
<string name="car_permission_label_audio_volume" msgid="310587969373137690">"कारको अडियोको भोल्युम नियन्त्रण गर्ने"</string>
<string name="car_permission_label_audio_settings" msgid="6524703796944023977">"कारका अडियो सेटिङ व्यवस्थित गर्ने"</string>
<string name="car_permission_label_mock_vehicle_hal" msgid="7198852512207405935">"सवारी साधनको HAL को अनुकरण गर्ने"</string>
<string name="car_permission_label_receive_ducking" msgid="4884538660766756573">"अडियो डकिङ कार्यक्रमहरू प्राप्त गर्नुहोस्"</string>
- <string name="car_permission_desc_receive_ducking" msgid="776376388266656512">"कारमा अन्य अडियो प्ले भइरहेका हुनाले अनुप्रयोगको भोल्युम कम भइरहेको कुराबारे अनुप्रयोगलाई सूचित हुन दिन्छ।"</string>
+ <string name="car_permission_desc_receive_ducking" msgid="776376388266656512">"कारमा अन्य अडियो प्ले भइरहेका हुनाले अनुप्रयोगको भोल्युम कम भइरहेको कुराबारे एपलाई सूचित हुन दिन्छ।"</string>
<string name="car_permission_desc_mock_vehicle_hal" msgid="5235596491098649155">"आन्तरिक परीक्षण गर्ने प्रयोजनका लागि तपाईंको कारको सवारी साधन HAL को अनुकरण गर्ने।"</string>
<string name="car_permission_desc_audio_volume" msgid="536626185654307889">"तपाईंको कारको अडियोको भोल्युम नियन्त्रण गर्ने।"</string>
<string name="car_permission_desc_audio_settings" msgid="7192007170677915937">"आफ्नो कारको अडियोसम्बन्धी सेटिङहरू नियन्त्रण गर्नुहोस्।"</string>
<string name="car_permission_label_control_app_blocking" msgid="9112678596919993386">"अनुप्रयोगमाथि रोक लगाउने कार्य"</string>
- <string name="car_permission_desc_control_app_blocking" msgid="7539378161760696190">"सवारी साधन चलाइरहेका बेलामा अनुप्रयोगलाई रोक लगाउने प्रक्रिया नियन्त्रण गर्ने।"</string>
+ <string name="car_permission_desc_control_app_blocking" msgid="7539378161760696190">"सवारी साधन चलाइरहेका बेलामा एपलाई रोक लगाउने प्रक्रिया नियन्त्रण गर्ने।"</string>
<string name="car_permission_car_navigation_manager" msgid="5895461364007854077">"नेभिगेसन प्रबन्धक"</string>
<string name="car_permission_desc_car_navigation_manager" msgid="6188751054665471537">"नेभिगेसनसम्बन्धी डेटालाई उपकरणको क्लस्टरमा रिपोर्ट गर्ने"</string>
<string name="car_permission_car_display_in_cluster" msgid="4005987646292458684">"उपकरणको क्लस्टरमा प्रत्यक्ष रेन्डर गर्ने प्रक्रिया"</string>
- <string name="car_permission_desc_car_display_in_cluster" msgid="2668300546822672927">"कुनै अनुप्रयोगलाई उपकरणको क्लस्टरमा देखाइने क्रियाकलापहरूको घोषणा गर्न दिनुहोस्"</string>
+ <string name="car_permission_desc_car_display_in_cluster" msgid="2668300546822672927">"कुनै एपलाई उपकरणको क्लस्टरमा देखाइने क्रियाकलापहरूको घोषणा गर्न दिनुहोस्"</string>
<string name="car_permission_car_cluster_control" msgid="1382247204230165674">"उपकरणको क्लस्टरको नियन्त्रण"</string>
<string name="car_permission_desc_car_cluster_control" msgid="9222776665281176031">"उपकरणको क्लस्टरमा एपहरू सुरु गर्नुहोस्"</string>
<string name="car_permission_label_bind_instrument_cluster_rendering" msgid="8627480897198377418">"उपकरणको क्लस्टर रेन्डर गर्ने प्रक्रिया"</string>
@@ -63,7 +63,7 @@
<string name="car_permission_label_car_ux_restrictions_configuration" msgid="6801393970411049725">"UX सम्बन्धी प्रतिबन्धहरूको कन्फिगुरेसन"</string>
<string name="car_permission_desc_car_ux_restrictions_configuration" msgid="5711926927484813777">"UX सम्बन्धी प्रतिबन्धहरू कन्फिगर गर्नुहोस्"</string>
<string name="car_permission_label_car_handle_usb_aoap_device" msgid="72783989504378036">"AOAP मोडमा USB यन्त्रसँग सञ्चार गर्नुहोस्"</string>
- <string name="car_permission_desc_car_handle_usb_aoap_device" msgid="273505990971317034">"AOAP मोडमा अनुप्रयोगलाई कुनै यन्त्रसँग सञ्चार गर्न दिन्छ"</string>
+ <string name="car_permission_desc_car_handle_usb_aoap_device" msgid="273505990971317034">"AOAP मोडमा एपलाई कुनै यन्त्रसँग सञ्चार गर्न दिन्छ"</string>
<string name="car_permission_label_read_car_occupant_awareness_state" msgid="125517953575032758">"Occupant Awareness System रिड गर्ने पहुँच"</string>
<string name="car_permission_desc_read_car_occupant_awareness_state" msgid="188865882598414986">"Occupant Awareness System को स्थिति र पत्ता लगाउनेसम्बन्धी डेटा रिड गर्न दिन्छ"</string>
<string name="car_permission_label_control_car_occupant_awareness_system" msgid="7163330266691094542">"Occupant Awareness System सम्बन्धी ग्राफको नियन्त्रण गर्नुहोस्"</string>
diff --git a/service/src/com/android/car/CarOccupantZoneService.java b/service/src/com/android/car/CarOccupantZoneService.java
index 545c636..d9949c0 100644
--- a/service/src/com/android/car/CarOccupantZoneService.java
+++ b/service/src/com/android/car/CarOccupantZoneService.java
@@ -551,6 +551,13 @@
}
/**
+ * returns the current driver user id.
+ */
+ public @UserIdInt int getDriverUserId() {
+ return getCurrentUser();
+ }
+
+ /**
* Sets the mapping for audio zone id to occupant zone id.
*
* @param audioZoneIdToOccupantZoneMapping map for audio zone id, where key is the audio zone id
diff --git a/service/src/com/android/car/CarPowerManagementService.java b/service/src/com/android/car/CarPowerManagementService.java
index d130c43..7446d35 100644
--- a/service/src/com/android/car/CarPowerManagementService.java
+++ b/service/src/com/android/car/CarPowerManagementService.java
@@ -169,7 +169,7 @@
}
@VisibleForTesting
- CarPowerManagementService(Context context, Resources resources, PowerHalService powerHal,
+ public CarPowerManagementService(Context context, Resources resources, PowerHalService powerHal,
SystemInterface systemInterface, UserManager userManager,
CarUserService carUserService, InitialUserSetter initialUserSetter) {
mContext = context;
@@ -194,7 +194,7 @@
}
@VisibleForTesting
- protected void setShutdownTimersForTest(int pollingIntervalMs, int shutdownTimeoutMs) {
+ public void setShutdownTimersForTest(int pollingIntervalMs, int shutdownTimeoutMs) {
// Override timers to keep testing time short
// Passing in '0' resets the value to the default
synchronized (mLock) {
diff --git a/service/src/com/android/car/CarShellCommand.java b/service/src/com/android/car/CarShellCommand.java
index 633a4bf..fc6b2d2 100644
--- a/service/src/com/android/car/CarShellCommand.java
+++ b/service/src/com/android/car/CarShellCommand.java
@@ -15,6 +15,9 @@
*/
package com.android.car;
+import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationSetValue.ASSOCIATE_CURRENT_USER;
+import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationSetValue.DISASSOCIATE_ALL_USERS;
+import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationSetValue.DISASSOCIATE_CURRENT_USER;
import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType.CUSTOM_1;
import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType.CUSTOM_2;
import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType.CUSTOM_3;
@@ -23,6 +26,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.UserIdInt;
import android.app.ActivityManager;
import android.app.ActivityOptions;
import android.app.UiModeManager;
@@ -30,7 +34,7 @@
import android.car.input.CarInputManager;
import android.car.input.RotaryEvent;
import android.car.user.CarUserManager;
-import android.car.user.GetUserIdentificationAssociationResponse;
+import android.car.user.UserIdentificationAssociationResponse;
import android.car.user.UserSwitchResult;
import android.car.userlib.HalCallback;
import android.car.userlib.UserHalHelper;
@@ -41,10 +45,13 @@
import android.hardware.automotive.vehicle.V2_0.SwitchUserMessageType;
import android.hardware.automotive.vehicle.V2_0.SwitchUserStatus;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociation;
+import android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationSetValue;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationValue;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationGetRequest;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationResponse;
+import android.hardware.automotive.vehicle.V2_0.UserIdentificationSetAssociation;
+import android.hardware.automotive.vehicle.V2_0.UserIdentificationSetRequest;
import android.hardware.automotive.vehicle.V2_0.UserInfo;
import android.hardware.automotive.vehicle.V2_0.UsersInfo;
import android.hardware.automotive.vehicle.V2_0.VehicleArea;
@@ -117,6 +124,8 @@
"reset-user-in-occupant-zone";
private static final String COMMAND_GET_USER_AUTH_ASSOCIATION =
"get-user-auth-association";
+ private static final String COMMAND_SET_USER_AUTH_ASSOCIATION =
+ "set-user-auth-association";
// Whitelist of commands allowed in user build. All these command should be protected with
// a permission. K: command, V: required permission.
@@ -139,6 +148,8 @@
android.Manifest.permission.MANAGE_USERS);
USER_BUILD_COMMAND_TO_PERMISSION_MAP.put(COMMAND_GET_USER_AUTH_ASSOCIATION,
android.Manifest.permission.MANAGE_USERS);
+ USER_BUILD_COMMAND_TO_PERMISSION_MAP.put(COMMAND_SET_USER_AUTH_ASSOCIATION,
+ android.Manifest.permission.MANAGE_USERS);
}
private static final String DEVICE_POWER_PERMISSION = "android.permission.DEVICE_POWER";
@@ -155,10 +166,16 @@
private static final int RESULT_OK = 0;
private static final int RESULT_ERROR = -1; // Arbitrary value, any non-0 is fine
+ private static final int DEFAULT_HAL_TIMEOUT_MS = 1_000;
+
+ private static final int INVALID_USER_AUTH_TYPE_OR_VALUE = -1;
+
private static final SparseArray<String> VALID_USER_AUTH_TYPES;
- private static final int INVALID_USER_AUTH_TYPE = -1;
private static final String VALID_USER_AUTH_TYPES_HELP;
+ private static final SparseArray<String> VALID_USER_AUTH_SET_VALUES;
+ private static final String VALID_USER_AUTH_SET_VALUES_HELP;
+
static {
VALID_USER_AUTH_TYPES = new SparseArray<String>(5);
VALID_USER_AUTH_TYPES.put(KEY_FOB, UserIdentificationAssociationType.toString(KEY_FOB));
@@ -166,16 +183,29 @@
VALID_USER_AUTH_TYPES.put(CUSTOM_2, UserIdentificationAssociationType.toString(CUSTOM_2));
VALID_USER_AUTH_TYPES.put(CUSTOM_3, UserIdentificationAssociationType.toString(CUSTOM_3));
VALID_USER_AUTH_TYPES.put(CUSTOM_4, UserIdentificationAssociationType.toString(CUSTOM_4));
+ VALID_USER_AUTH_TYPES_HELP = getHelpString("types", VALID_USER_AUTH_TYPES);
- StringBuilder help = new StringBuilder("Valid types are: ");
- int size = VALID_USER_AUTH_TYPES.size();
+ VALID_USER_AUTH_SET_VALUES = new SparseArray<String>(3);
+ VALID_USER_AUTH_SET_VALUES.put(ASSOCIATE_CURRENT_USER,
+ UserIdentificationAssociationSetValue.toString(ASSOCIATE_CURRENT_USER));
+ VALID_USER_AUTH_SET_VALUES.put(DISASSOCIATE_CURRENT_USER,
+ UserIdentificationAssociationSetValue.toString(DISASSOCIATE_CURRENT_USER));
+ VALID_USER_AUTH_SET_VALUES.put(DISASSOCIATE_ALL_USERS,
+ UserIdentificationAssociationSetValue.toString(DISASSOCIATE_ALL_USERS));
+ VALID_USER_AUTH_SET_VALUES_HELP = getHelpString("values", VALID_USER_AUTH_SET_VALUES);
+ }
+
+ @NonNull
+ private static String getHelpString(@NonNull String name, @NonNull SparseArray<String> values) {
+ StringBuilder help = new StringBuilder("Valid ").append(name).append(" are: ");
+ int size = values.size();
for (int i = 0; i < size; i++) {
- help.append(VALID_USER_AUTH_TYPES.valueAt(i));
+ help.append(values.valueAt(i));
if (i != size - 1) {
help.append(", ");
}
}
- VALID_USER_AUTH_TYPES_HELP = help.append('.').toString();
+ return help.append('.').toString();
}
private final Context mContext;
@@ -257,8 +287,11 @@
pw.println("\t Print this help text.");
pw.println("\tday-night-mode [day|night|sensor]");
pw.println("\t Force into day/night mode or restore to auto.");
- pw.println("\tinject-vhal-event property [zone] data(can be comma separated list)");
+ pw.println("\tinject-vhal-event property [zone] data(can be comma separated list) "
+ + "[-t delay_time_seconds]");
pw.println("\t Inject a vehicle property for testing.");
+ pw.println("\t delay_time_seconds: the event timestamp is increased by certain second.");
+ pw.println("\t If not specified, it will be 0.");
pw.println("\tinject-error-event property zone errorCode");
pw.println("\t Inject an error event from VHAL for testing.");
pw.println("\tenable-uxr true|false");
@@ -337,13 +370,14 @@
pw.printf("\t%s [occupantZoneId]\n", COMMAND_RESET_USER_ID_IN_OCCUPANT_ZONE);
pw.println("\t Unmaps the user assigned to occupant zone id.");
- pw.printf("\t%s [--hal-only] [--user USER_ID] (TYPE1) [...TYPE_N]\n",
- COMMAND_GET_USER_AUTH_ASSOCIATION);
- pw.println("\t Checks whether the given user authentication types are associated with ");
- pw.println("\t the given user (or current user when not specified).");
- pw.println("\t By defalut it calls CarUserManager, but using --hal-only will call just "
+ pw.printf("\t%s [--hal-only] [--user USER_ID] TYPE1 VALUE1 [..TYPE_N VALUE_N]\n",
+ COMMAND_SET_USER_AUTH_ASSOCIATION);
+ pw.println("\t Sets the N user authentication types with the N values for the given user");
+ pw.println("\t (or current user when not specified).");
+ pw.println("\t By defautt it calls CarUserManager, but using --hal-only will call just "
+ "UserHalService.");
pw.printf("\t %s\n", VALID_USER_AUTH_TYPES_HELP);
+ pw.printf("\t %s\n", VALID_USER_AUTH_SET_VALUES_HELP);
}
private static int showInvalidArguments(PrintWriter pw) {
@@ -409,9 +443,12 @@
case COMMAND_INJECT_VHAL_EVENT:
String zone = PARAM_VEHICLE_PROPERTY_AREA_GLOBAL;
String data;
- if (args.length != 3 && args.length != 4) {
+ int argNum = args.length;
+ if (argNum < 3 || argNum > 6) {
return showInvalidArguments(writer);
- } else if (args.length == 4) {
+ }
+ String delayTime = args[argNum - 2].equals("-t") ? args[argNum - 1] : "0";
+ if (argNum == 4 || argNum == 6) {
// Zoned
zone = args[2];
data = args[3];
@@ -419,7 +456,7 @@
// Global
data = args[2];
}
- injectVhalEvent(args[1], zone, data, false, writer);
+ injectVhalEvent(args[1], zone, data, false, delayTime, writer);
break;
case COMMAND_INJECT_ERROR_EVENT:
if (args.length != 4) {
@@ -427,7 +464,7 @@
}
String errorAreaId = args[2];
String errorCode = args[3];
- injectVhalEvent(args[1], errorAreaId, errorCode, true, writer);
+ injectVhalEvent(args[1], errorAreaId, errorCode, true, "0", writer);
break;
case COMMAND_ENABLE_UXR:
if (args.length != 2) {
@@ -559,6 +596,9 @@
case COMMAND_GET_USER_AUTH_ASSOCIATION:
getUserAuthAssociation(args, writer);
break;
+ case COMMAND_SET_USER_AUTH_ASSOCIATION:
+ setUserAuthAssociation(args, writer);
+ break;
default:
writer.println("Unknown command: \"" + cmd + "\"");
showHelp(writer);
@@ -782,7 +822,7 @@
String typeArg = args[1];
int requestType = UserHalHelper.parseInitialUserInfoRequestType(typeArg);
- int timeout = 1_000;
+ int timeout = DEFAULT_HAL_TIMEOUT_MS;
for (int i = 2; i < args.length; i++) {
String arg = args[i];
switch (arg) {
@@ -841,7 +881,7 @@
}
int targetUserId = Integer.parseInt(args[1]);
- int timeout = 1_000;
+ int timeout = DEFAULT_HAL_TIMEOUT_MS;
boolean halOnly = false;
for (int i = 2; i < args.length; i++) {
@@ -896,20 +936,10 @@
waitForHal(writer, latch, timeout);
return;
}
- Car car = Car.createCar(mContext);
- CarUserManager carUserManager =
- (CarUserManager) car.getCarManager(Car.CAR_USER_SERVICE);
+ CarUserManager carUserManager = getCarUserManager(mContext);
AndroidFuture<UserSwitchResult> future = carUserManager.switchUser(targetUserId);
- UserSwitchResult result = null;
- try {
- result = future.get(timeout, TimeUnit.MILLISECONDS);
- } catch (Exception e) {
- Log.e(TAG, "exception calling CarUserManager.switchUser(" + targetUserId + ")", e);
- }
- if (result == null) {
- writer.printf("Service didn't respond in %d ms", timeout);
- return;
- }
+ UserSwitchResult result = waitForFuture(writer, future, timeout);
+ if (result == null) return;
writer.printf("UserSwitchResult: status = %s\n",
UserSwitchResult.statusToString(result.getStatus()));
String msg = result.getErrorMessage();
@@ -918,6 +948,20 @@
}
}
+ private static <T> T waitForFuture(@NonNull PrintWriter writer,
+ @NonNull AndroidFuture<T> future, int timeoutMs) {
+ T result = null;
+ try {
+ result = future.get(timeoutMs, TimeUnit.MILLISECONDS);
+ if (result == null) {
+ writer.printf("Service didn't respond in %d ms", timeoutMs);
+ }
+ } catch (Exception e) {
+ writer.printf("Exception getting future: %s", e);
+ }
+ return result;
+ }
+
private void getInitialUser(PrintWriter writer) {
android.content.pm.UserInfo user = mCarUserService.getInitialUser();
writer.println(user == null ? NO_INITIAL_USER : user.id);
@@ -948,8 +992,8 @@
halOnly = true;
break;
default:
- int type = parseAuthType(arg);
- if (type == INVALID_USER_AUTH_TYPE) {
+ int type = parseAuthArg(VALID_USER_AUTH_TYPES, arg);
+ if (type == INVALID_USER_AUTH_TYPE_OR_VALUE) {
writer.printf("Invalid type at index %d (from %s): %s. %s\n", i + 1,
Arrays.toString(args), arg, VALID_USER_AUTH_TYPES_HELP);
return;
@@ -971,24 +1015,21 @@
+ ", request=" + request);
UserIdentificationResponse response = mHal.getUserHal().getUserAssociation(request);
Log.d(TAG, "getUserAuthAssociation(): response=" + response);
-
- if (response == null) {
- writer.println("null response");
- return;
- }
-
- if (!TextUtils.isEmpty(response.errorMessage)) {
- writer.printf("Error message: %s\n", response.errorMessage);
- }
- int numberAssociations = response.associations.size();
- writer.printf("%d associations:\n", numberAssociations);
- for (int i = 0; i < numberAssociations; i++) {
- UserIdentificationAssociation association = response.associations.get(i);
- writer.printf(" %s\n", association);
- }
+ showResponse(writer, response);
return;
}
+ CarUserManager carUserManager = getCarUserManager(writer, userId);
+ int[] types = new int[requestSize];
+ for (int i = 0; i < requestSize; i++) {
+ types[i] = request.associationTypes.get(i);
+ }
+ UserIdentificationAssociationResponse response = carUserManager
+ .getUserIdentificationAssociation(types);
+ showResponse(writer, response);
+ }
+
+ private CarUserManager getCarUserManager(@NonNull PrintWriter writer, @UserIdInt int userId) {
Context context;
if (userId == mContext.getUserId()) {
context = mContext;
@@ -1001,14 +1042,35 @@
+ "what CarUserService will use when calling HAL.\n", userId, actualUserId);
}
+ return getCarUserManager(context);
+ }
+
+ private CarUserManager getCarUserManager(@NonNull Context context) {
Car car = Car.createCar(context);
CarUserManager carUserManager = (CarUserManager) car.getCarManager(Car.CAR_USER_SERVICE);
- int[] types = new int[requestSize];
- for (int i = 0; i < types.length; i++) {
- types[i] = request.associationTypes.get(i);
+ return carUserManager;
+ }
+
+ private void showResponse(@NonNull PrintWriter writer,
+ @NonNull UserIdentificationResponse response) {
+ if (response == null) {
+ writer.println("null response");
+ return;
}
- GetUserIdentificationAssociationResponse response = carUserManager
- .getUserIdentificationAssociation(types);
+
+ if (!TextUtils.isEmpty(response.errorMessage)) {
+ writer.printf("Error message: %s\n", response.errorMessage);
+ }
+ int numberAssociations = response.associations.size();
+ writer.printf("%d associations:\n", numberAssociations);
+ for (int i = 0; i < numberAssociations; i++) {
+ UserIdentificationAssociation association = response.associations.get(i);
+ writer.printf(" %s\n", association);
+ }
+ }
+
+ private void showResponse(@NonNull PrintWriter writer,
+ @NonNull UserIdentificationAssociationResponse response) {
if (response == null) {
writer.println("null response");
return;
@@ -1024,13 +1086,99 @@
}
}
- private static int parseAuthType(@NonNull String type) {
- for (int i = 0; i < VALID_USER_AUTH_TYPES.size(); i++) {
- if (VALID_USER_AUTH_TYPES.valueAt(i).equals(type)) {
- return VALID_USER_AUTH_TYPES.keyAt(i);
+ private void setUserAuthAssociation(String[] args, PrintWriter writer) {
+ if (args.length < 3) {
+ writer.println("invalid usage, must pass at least 4 arguments");
+ return;
+ }
+
+ boolean halOnly = false;
+ int timeout = DEFAULT_HAL_TIMEOUT_MS;
+ int userId = UserHandle.USER_CURRENT;
+
+ UserIdentificationSetRequest request = new UserIdentificationSetRequest();
+ for (int i = 1; i < args.length; i++) {
+ String arg = args[i];
+ switch (arg) {
+ case "--user":
+ try {
+ userId = Integer.parseInt(args[++i]);
+ } catch (Exception e) {
+ writer.printf("Invalid user id at index %d (from %s): %s\n", i + 1,
+ Arrays.toString(args), arg);
+ }
+ break;
+ case "--hal-only":
+ halOnly = true;
+ break;
+ case "--timeout":
+ timeout = Integer.parseInt(args[++i]);
+ break;
+ default:
+ UserIdentificationSetAssociation association =
+ new UserIdentificationSetAssociation();
+ association.type = parseAuthArg(VALID_USER_AUTH_TYPES, arg);
+ if (association.type == INVALID_USER_AUTH_TYPE_OR_VALUE) {
+ writer.printf("Invalid type at index %d (from %s): %s. %s\n", i + 1,
+ Arrays.toString(args), arg, VALID_USER_AUTH_TYPES_HELP);
+ return;
+ }
+ association.value = parseAuthArg(VALID_USER_AUTH_SET_VALUES, args[++i]);
+ if (association.value == INVALID_USER_AUTH_TYPE_OR_VALUE) {
+ writer.printf("Invalid value at index %d (from %s): %s. %s\n", i + 1,
+ Arrays.toString(args), arg, VALID_USER_AUTH_SET_VALUES_HELP);
+ return;
+ }
+ request.associations.add(association);
+ }
+
+ }
+ if (userId == UserHandle.USER_CURRENT) {
+ userId = ActivityManager.getCurrentUser();
+ }
+ int requestSize = request.associations.size();
+ if (halOnly) {
+ request.numberAssociations = requestSize;
+ // TODO(b/150413515): use UserHalHelper to set user flags
+ request.userInfo.userId = userId;
+
+ Log.d(TAG, "setUserAuthAssociation(): user=" + userId + ", halOnly=" + halOnly
+ + ", request=" + request);
+ CountDownLatch latch = new CountDownLatch(1);
+ mHal.getUserHal().setUserAssociation(timeout, request, (status, response) -> {
+ Log.d(TAG, "setUserAuthAssociation(): response=" + response);
+ try {
+ showResponse(writer, response);
+ } finally {
+ latch.countDown();
+ }
+ });
+ waitForHal(writer, latch, timeout);
+ return;
+ }
+ CarUserManager carUserManager = getCarUserManager(writer, userId);
+ int[] types = new int[requestSize];
+ int[] values = new int[requestSize];
+ for (int i = 0; i < requestSize; i++) {
+ UserIdentificationSetAssociation association = request.associations.get(i);
+ types[i] = association.type;
+ values[i] = association.value;
+ }
+ AndroidFuture<UserIdentificationAssociationResponse> future = carUserManager
+ .setUserIdentificationAssociation(types, values);
+ UserIdentificationAssociationResponse response = waitForFuture(writer, future, timeout);
+ if (response != null) {
+ showResponse(writer, response);
+ }
+ }
+
+ private static int parseAuthArg(@NonNull SparseArray<String> types, @NonNull String type) {
+ for (int i = 0; i < types.size(); i++) {
+ if (types.valueAt(i).equals(type)) {
+ return types.keyAt(i);
}
}
- return INVALID_USER_AUTH_TYPE;
+ return INVALID_USER_AUTH_TYPE_OR_VALUE;
}
private void forceDayNightMode(String arg, PrintWriter writer) {
@@ -1098,10 +1246,11 @@
* @param zone Zone that this event services
* @param isErrorEvent indicates the type of event
* @param value Data value of the event
+ * @param delayTime the event timestamp is increased by delayTime
* @param writer PrintWriter
*/
private void injectVhalEvent(String property, String zone, String value,
- boolean isErrorEvent, PrintWriter writer) {
+ boolean isErrorEvent, String delayTime, PrintWriter writer) {
if (zone != null && (zone.equalsIgnoreCase(PARAM_VEHICLE_PROPERTY_AREA_GLOBAL))) {
if (!isPropertyAreaTypeGlobal(property)) {
writer.println("Property area type inconsistent with given zone");
@@ -1112,7 +1261,7 @@
if (isErrorEvent) {
mHal.injectOnPropertySetError(property, zone, value);
} else {
- mHal.injectVhalEvent(property, zone, value);
+ mHal.injectVhalEvent(property, zone, value, delayTime);
}
} catch (NumberFormatException e) {
writer.println("Invalid property Id zone Id or value" + e);
diff --git a/service/src/com/android/car/audio/CarAudioService.java b/service/src/com/android/car/audio/CarAudioService.java
index 6cf9cd8..c880709 100644
--- a/service/src/com/android/car/audio/CarAudioService.java
+++ b/service/src/com/android/car/audio/CarAudioService.java
@@ -20,7 +20,6 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
-import android.app.ActivityManager;
import android.car.Car;
import android.car.CarOccupantZoneManager;
import android.car.CarOccupantZoneManager.OccupantZoneConfigChangeListener;
@@ -1151,33 +1150,39 @@
}
private void handleOccupantZoneUserChanged() {
+ int driverUserId = mOccupantZoneService.getDriverUserId();
synchronized (mImplLock) {
- if (isOccupantZoneMappingAvailable()) {
+ if (!isOccupantZoneMappingAvailable()) {
//No occupant zone to audio zone mapping, re-adjust to settings driver.
- int driverId = ActivityManager.getCurrentUser();
for (int index = 0; index < mCarAudioZones.length; index++) {
CarAudioZone zone = mCarAudioZones[index];
- zone.updateVolumeGroupsForUser(driverId);
- mFocusHandler.updateUserForZoneId(zone.getId(), driverId);
+ zone.updateVolumeGroupsForUser(driverUserId);
+ mFocusHandler.updateUserForZoneId(zone.getId(), driverUserId);
}
return;
}
for (int index = 0; index < mAudioZoneIdToOccupantZoneIdMapping.size(); index++) {
int audioZoneId = mAudioZoneIdToOccupantZoneIdMapping.keyAt(index);
int occupantZoneId = mAudioZoneIdToOccupantZoneIdMapping.get(audioZoneId);
- updateUserForOccupantZoneLocked(occupantZoneId, audioZoneId);
+ updateUserForOccupantZoneLocked(occupantZoneId, audioZoneId, driverUserId);
}
}
}
private boolean isOccupantZoneMappingAvailable() {
- return mAudioZoneIdToOccupantZoneIdMapping.size() == 0;
+ return mAudioZoneIdToOccupantZoneIdMapping.size() > 0;
}
- private void updateUserForOccupantZoneLocked(int occupantZoneId, int audioZoneId) {
+ private void updateUserForOccupantZoneLocked(int occupantZoneId, int audioZoneId,
+ @UserIdInt int driverUserId) {
+ CarAudioZone zone = getAudioZoneForZoneIdLocked(audioZoneId);
int userId = mOccupantZoneService.getUserForOccupant(occupantZoneId);
int prevUserId = getUserIdForZoneLocked(audioZoneId);
+ Objects.requireNonNull(zone, () ->
+ "setUserIdDeviceAffinity for userId " + userId
+ + " in zone " + audioZoneId + " Failed, invalid zone.");
+
// user in occupant zone has not changed
if (userId == prevUserId) {
return;
@@ -1186,30 +1191,30 @@
// This would be true even if the new user is UserHandle.USER_NULL,
// as that indicates the user has logged out.
removeUserIdDeviceAffinitiesLocked(prevUserId);
- resetCarZonesAudioFocus(audioZoneId);
if (userId == UserHandle.USER_NULL) {
+ // Reset zone back to driver user id
+ resetZoneToDefaultUser(zone, driverUserId);
return;
}
- CarAudioZone zone = getAudioZoneForZoneIdLocked(audioZoneId);
- if (zone != null
- && !mAudioPolicy.setUserIdDeviceAffinity(userId, zone.getAudioDeviceInfos())) {
+ if (!mAudioPolicy.setUserIdDeviceAffinity(userId, zone.getAudioDeviceInfos())) {
throw new IllegalStateException(String.format(
"setUserIdDeviceAffinity for userId %d in zone %d Failed,"
+ " could not set audio routing.",
userId, audioZoneId));
- } else if (zone == null) {
- throw new IllegalStateException(String.format(
- "setUserIdDeviceAffinity for userId %d in zone %d Failed, invalid zone.",
- userId, audioZoneId));
}
mAudioZoneIdToUserIdMapping.put(audioZoneId, userId);
zone.updateVolumeGroupsForUser(userId);
mFocusHandler.updateUserForZoneId(audioZoneId, userId);
}
- private void resetCarZonesAudioFocus(int audioZoneId) {
- mFocusHandler.updateUserForZoneId(audioZoneId, UserHandle.USER_NULL);
+ private void resetZoneToDefaultUser(CarAudioZone zone, @UserIdInt int driverUserId) {
+ resetCarZonesAudioFocus(zone.getId(), driverUserId);
+ zone.updateVolumeGroupsForUser(driverUserId);
+ }
+
+ private void resetCarZonesAudioFocus(int audioZoneId, @UserIdInt int driverUserId) {
+ mFocusHandler.updateUserForZoneId(audioZoneId, driverUserId);
}
private CarAudioZone getAudioZoneForZoneIdLocked(int audioZoneId) {
diff --git a/service/src/com/android/car/audio/CarVolumeGroup.java b/service/src/com/android/car/audio/CarVolumeGroup.java
index 35d5a46..5244b67 100644
--- a/service/src/com/android/car/audio/CarVolumeGroup.java
+++ b/service/src/com/android/car/audio/CarVolumeGroup.java
@@ -17,10 +17,11 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
-import android.app.ActivityManager;
+import android.annotation.UserIdInt;
import android.car.media.CarAudioManager;
import android.content.Context;
import android.media.AudioDevicePort;
+import android.os.UserHandle;
import android.util.Log;
import android.util.SparseArray;
@@ -49,12 +50,15 @@
private final SparseArray<String> mContextToAddress = new SparseArray<>();
private final Map<String, CarAudioDeviceInfo> mAddressToCarAudioDeviceInfo = new HashMap<>();
+ private final Object mLock = new Object();
+
private int mDefaultGain = Integer.MIN_VALUE;
private int mMaxGain = Integer.MIN_VALUE;
private int mMinGain = Integer.MAX_VALUE;
private int mStepSize = 0;
private int mStoredGainIndex;
private int mCurrentGainIndex = -1;
+ private @UserIdInt int mUserId = UserHandle.USER_CURRENT;
/**
* Constructs a {@link CarVolumeGroup} instance
@@ -66,8 +70,7 @@
mSettingsManager = settings;
mZoneId = zoneId;
mId = id;
-
- updateUserId(ActivityManager.getCurrentUser());
+ mStoredGainIndex = mSettingsManager.getStoredVolumeGainIndexForUser(mUserId, mZoneId, mId);
}
/**
@@ -152,28 +155,31 @@
CarAudioContext.toString(carAudioContext),
mContextToAddress.get(carAudioContext)));
- if (mAddressToCarAudioDeviceInfo.size() == 0) {
- mStepSize = info.getStepValue();
- } else {
- Preconditions.checkArgument(
- info.getStepValue() == mStepSize,
- "Gain controls within one group must have same step value");
- }
+ synchronized (mLock) {
+ if (mAddressToCarAudioDeviceInfo.size() == 0) {
+ mStepSize = info.getStepValue();
+ } else {
+ Preconditions.checkArgument(
+ info.getStepValue() == mStepSize,
+ "Gain controls within one group must have same step value");
+ }
- mAddressToCarAudioDeviceInfo.put(info.getAddress(), info);
- mContextToAddress.put(carAudioContext, info.getAddress());
+ mAddressToCarAudioDeviceInfo.put(info.getAddress(), info);
+ mContextToAddress.put(carAudioContext, info.getAddress());
- if (info.getDefaultGain() > mDefaultGain) {
- // We're arbitrarily selecting the highest device default gain as the group's default.
- mDefaultGain = info.getDefaultGain();
+ if (info.getDefaultGain() > mDefaultGain) {
+ // We're arbitrarily selecting the highest
+ // device default gain as the group's default.
+ mDefaultGain = info.getDefaultGain();
+ }
+ if (info.getMaxGain() > mMaxGain) {
+ mMaxGain = info.getMaxGain();
+ }
+ if (info.getMinGain() < mMinGain) {
+ mMinGain = info.getMinGain();
+ }
+ updateCurrentGainIndexLocked();
}
- if (info.getMaxGain() > mMaxGain) {
- mMaxGain = info.getMaxGain();
- }
- if (info.getMinGain() < mMinGain) {
- mMinGain = info.getMinGain();
- }
- updateCurrentGainIndex();
}
/**
@@ -181,42 +187,60 @@
* @param userId new user
* @note also reloads the store gain index for the user
*/
- private void updateUserId(int userId) {
- mStoredGainIndex = mSettingsManager.getStoredVolumeGainIndexForUser(userId, mZoneId, mId);
- Log.i(CarLog.TAG_AUDIO, "updateUserId userId " + userId
- + " mStoredGainIndex " + mStoredGainIndex);
+ private void updateUserIdLocked(@UserIdInt int userId) {
+ mUserId = userId;
+ mStoredGainIndex = getCurrentGainIndexForUserLocked();
+ }
+
+ private int getCurrentGainIndexForUserLocked() {
+ int gainIndexForUser = mSettingsManager.getStoredVolumeGainIndexForUser(mUserId, mZoneId,
+ mId);
+ Log.i(CarLog.TAG_AUDIO, "updateUserId userId " + mUserId
+ + " gainIndexForUser " + gainIndexForUser);
+ return gainIndexForUser;
}
/**
* Update the current gain index based on the stored gain index
*/
- private void updateCurrentGainIndex() {
- if (mStoredGainIndex < getMinGainIndex() || mStoredGainIndex > getMaxGainIndex()) {
- // We expected to load a value from last boot, but if we didn't (perhaps this is the
- // first boot ever?), then use the highest "default" we've seen to initialize
- // ourselves.
- mCurrentGainIndex = getIndexForGain(mDefaultGain);
- } else {
- // Just use the gain index we stored last time the gain was set (presumably during our
- // last boot cycle).
- mCurrentGainIndex = mStoredGainIndex;
+ private void updateCurrentGainIndexLocked() {
+ synchronized (mLock) {
+ if (mStoredGainIndex < getIndexForGainLocked(mMinGain)
+ || mStoredGainIndex > getIndexForGainLocked(mMaxGain)) {
+ // We expected to load a value from last boot, but if we didn't (perhaps this is the
+ // first boot ever?), then use the highest "default" we've seen to initialize
+ // ourselves.
+ mCurrentGainIndex = getIndexForGainLocked(mDefaultGain);
+ } else {
+ // Just use the gain index we stored last time the gain was
+ // set (presumably during our last boot cycle).
+ mCurrentGainIndex = mStoredGainIndex;
+ }
}
}
private int getDefaultGainIndex() {
- return getIndexForGain(mDefaultGain);
+ synchronized (mLock) {
+ return getIndexForGainLocked(mDefaultGain);
+ }
}
int getMaxGainIndex() {
- return getIndexForGain(mMaxGain);
+ synchronized (mLock) {
+ return getIndexForGainLocked(mMaxGain);
+ }
}
int getMinGainIndex() {
- return getIndexForGain(mMinGain);
+ synchronized (mLock) {
+ return getIndexForGainLocked(mMinGain);
+ }
}
int getCurrentGainIndex() {
- return mCurrentGainIndex;
+ synchronized (mLock) {
+ return mCurrentGainIndex;
+ }
}
/**
@@ -224,37 +248,43 @@
* @param gainIndex The gain index
*/
void setCurrentGainIndex(int gainIndex) {
- int gainInMillibels = getGainForIndex(gainIndex);
+ synchronized (mLock) {
+ int gainInMillibels = getGainForIndexLocked(gainIndex);
+ Preconditions.checkArgument(
+ gainInMillibels >= mMinGain && gainInMillibels <= mMaxGain,
+ "Gain out of range ("
+ + mMinGain + ":"
+ + mMaxGain + ") "
+ + gainInMillibels + "index "
+ + gainIndex);
- Preconditions.checkArgument(
- gainInMillibels >= mMinGain && gainInMillibels <= mMaxGain,
- "Gain out of range ("
- + mMinGain + ":"
- + mMaxGain + ") "
- + gainInMillibels + "index "
- + gainIndex);
+ for (String address : mAddressToCarAudioDeviceInfo.keySet()) {
+ CarAudioDeviceInfo info = mAddressToCarAudioDeviceInfo.get(address);
+ info.setCurrentGain(gainInMillibels);
+ }
- for (String address : mAddressToCarAudioDeviceInfo.keySet()) {
- CarAudioDeviceInfo info = mAddressToCarAudioDeviceInfo.get(address);
- info.setCurrentGain(gainInMillibels);
+ mCurrentGainIndex = gainIndex;
+
+ storeGainIndexForUserLocked(mCurrentGainIndex, mUserId);
}
+ }
- mCurrentGainIndex = gainIndex;
- mSettingsManager.storeVolumeGainIndexForUser(ActivityManager.getCurrentUser(),
+ private void storeGainIndexForUserLocked(int gainIndex, @UserIdInt int userId) {
+ mSettingsManager.storeVolumeGainIndexForUser(userId,
mZoneId, mId, gainIndex);
}
// Given a group level gain index, return the computed gain in millibells
// TODO (randolphs) If we ever want to add index to gain curves other than lock-stepped
// linear, this would be the place to do it.
- private int getGainForIndex(int gainIndex) {
+ private int getGainForIndexLocked(int gainIndex) {
return mMinGain + gainIndex * mStepSize;
}
// TODO (randolphs) if we ever went to a non-linear index to gain curve mapping, we'd need to
// revisit this as it assumes (at the least) that getGainForIndex is reversible. Luckily,
// this is an internal implementation details we could factor out if/when necessary.
- private int getIndexForGain(int gainInMillibel) {
+ private int getIndexForGainLocked(int gainInMillibel) {
return (gainInMillibel - mMinGain) / mStepSize;
}
@@ -281,37 +311,41 @@
/** Writes to dumpsys output */
void dump(String indent, PrintWriter writer) {
- writer.printf("%sCarVolumeGroup(%d)\n", indent, mId);
- writer.printf("%sUserId(%d)\n", indent, ActivityManager.getCurrentUser());
- writer.printf("%sGain values (min / max / default/ current): %d %d %d %d\n",
- indent, mMinGain, mMaxGain,
- mDefaultGain, getGainForIndex(mCurrentGainIndex));
- writer.printf("%sGain indexes (min / max / default / current): %d %d %d %d\n",
- indent, getMinGainIndex(), getMaxGainIndex(),
- getDefaultGainIndex(), mCurrentGainIndex);
- for (int i = 0; i < mContextToAddress.size(); i++) {
- writer.printf("%sContext: %s -> Address: %s\n", indent,
- CarAudioContext.toString(mContextToAddress.keyAt(i)),
- mContextToAddress.valueAt(i));
- }
- mAddressToCarAudioDeviceInfo.keySet().stream()
- .map(mAddressToCarAudioDeviceInfo::get)
- .forEach((info -> info.dump(indent, writer)));
+ synchronized (mLock) {
+ writer.printf("%sCarVolumeGroup(%d)\n", indent, mId);
+ writer.printf("%sUserId(%d)\n", indent, mUserId);
+ writer.printf("%sGain values (min / max / default/ current): %d %d %d %d\n",
+ indent, mMinGain, mMaxGain,
+ mDefaultGain, getGainForIndexLocked(mCurrentGainIndex));
+ writer.printf("%sGain indexes (min / max / default / current): %d %d %d %d\n",
+ indent, getMinGainIndex(), getMaxGainIndex(),
+ getDefaultGainIndex(), mCurrentGainIndex);
+ for (int i = 0; i < mContextToAddress.size(); i++) {
+ writer.printf("%sContext: %s -> Address: %s\n", indent,
+ CarAudioContext.toString(mContextToAddress.keyAt(i)),
+ mContextToAddress.valueAt(i));
+ }
+ mAddressToCarAudioDeviceInfo.keySet().stream()
+ .map(mAddressToCarAudioDeviceInfo::get)
+ .forEach((info -> info.dump(indent, writer)));
- // Empty line for comfortable reading
- writer.println();
+ // Empty line for comfortable reading
+ writer.println();
+ }
}
/**
* Load volumes for new user
* @param userId new user to load
*/
- void loadVolumesForUser(int userId) {
- //Update the volume for the new user
- updateUserId(userId);
- //Update the current gain index
- updateCurrentGainIndex();
- //Reset devices with current gain index
+ void loadVolumesForUser(@UserIdInt int userId) {
+ synchronized (mLock) {
+ //Update the volume for the new user
+ updateUserIdLocked(userId);
+ //Update the current gain index
+ updateCurrentGainIndexLocked();
+ //Reset devices with current gain index
+ }
setCurrentGainIndex(getCurrentGainIndex());
}
}
diff --git a/service/src/com/android/car/hal/UserHalService.java b/service/src/com/android/car/hal/UserHalService.java
index ea5a2e8..ce43be4 100644
--- a/service/src/com/android/car/hal/UserHalService.java
+++ b/service/src/com/android/car/hal/UserHalService.java
@@ -37,6 +37,7 @@
import android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationGetRequest;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationResponse;
+import android.hardware.automotive.vehicle.V2_0.UserIdentificationSetRequest;
import android.hardware.automotive.vehicle.V2_0.UserInfo;
import android.hardware.automotive.vehicle.V2_0.UsersInfo;
import android.hardware.automotive.vehicle.V2_0.VehiclePropConfig;
@@ -49,16 +50,19 @@
import android.text.TextUtils;
import android.util.EventLog;
import android.util.Log;
-import android.util.Pair;
-import android.util.Slog;
import android.util.SparseArray;
import android.util.SparseBooleanArray;
+import com.android.car.CarLocalServices;
+import com.android.car.user.CarUserService;
import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.car.EventLogTags;
+import com.android.internal.util.FunctionalUtils;
import com.android.internal.util.Preconditions;
import java.io.PrintWriter;
+import java.io.StringWriter;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
@@ -93,7 +97,7 @@
// This handler handles 2 types of messages:
// - "Anonymous" messages (what=0) containing runnables.
// - "Identifiable" messages used to check for timeouts (whose 'what' is the request id).
- private final Handler mHandler = new Handler(Looper.getMainLooper());
+ private final Handler mHandler;
/**
* Value used on the next request.
@@ -105,10 +109,16 @@
* Map of callbacks by request id.
*/
@GuardedBy("mLock")
- private SparseArray<Pair<Class<?>, HalCallback<?>>> mPendingCallbacks = new SparseArray<>();
+ private final SparseArray<PendingRequest<?, ?>> mPendingRequests = new SparseArray<>();
public UserHalService(VehicleHal hal) {
+ this(hal, new Handler(Looper.getMainLooper()));
+ }
+
+ @VisibleForTesting
+ UserHalService(VehicleHal hal, Handler handler) {
mHal = hal;
+ mHandler = handler;
}
@Override
@@ -150,10 +160,11 @@
UserHalService::handleOnSwitchUserResponse, this, value));
break;
case USER_IDENTIFICATION_ASSOCIATION:
- Slog.w(TAG, "HAL updated event for USER_IDENTIFICATION_ASSOCIATION: " + value);
+ mHandler.sendMessage(obtainMessage(
+ UserHalService::handleOnUserIdentificationAssociation, this, value));
break;
default:
- Slog.w(TAG, "received unsupported event from HAL: " + value);
+ Log.w(TAG, "received unsupported event from HAL: " + value);
}
}
}
@@ -224,24 +235,29 @@
synchronized (mLock) {
checkSupportedLocked();
if (hasPendingRequestLocked(InitialUserInfoResponse.class, callback)) return;
- requestId = mNextRequestId++;
+ requestId = getNextRequestId();
EventLog.writeEvent(EventLogTags.CAR_USER_HAL_INITIAL_USER_INFO_REQ, requestId,
requestType, timeoutMs);
- propRequest = UserHalHelper.createPropRequest(requestId, requestType,
- INITIAL_USER_INFO);
+ propRequest = UserHalHelper.createPropRequest(INITIAL_USER_INFO, requestId,
+ requestType);
UserHalHelper.addUsersInfo(propRequest, usersInfo);
addPendingRequestLocked(requestId, InitialUserInfoResponse.class, callback);
}
+ sendHalRequest(requestId, timeoutMs, propRequest, callback);
+ }
+
+ private void sendHalRequest(int requestId, int timeoutMs, @NonNull VehiclePropValue request,
+ @NonNull HalCallback<?> callback) {
mHandler.sendMessageDelayed(obtainMessage(
UserHalService::handleCheckIfRequestTimedOut, this, requestId).setWhat(requestId),
timeoutMs);
try {
- if (DBG) Log.d(TAG, "Calling hal.set(): " + propRequest);
- mHal.set(propRequest);
+ if (DBG) Log.d(TAG, "Calling hal.set(): " + request);
+ mHal.set(request);
} catch (ServiceSpecificException e) {
handleRemovePendingRequest(requestId);
- Log.w(TAG, "Failed to set INITIAL_USER_INFO", e);
+ Log.w(TAG, "Failed to set " + request, e);
callback.onResponse(HalCallback.STATUS_HAL_SET_TIMEOUT, null);
}
}
@@ -271,7 +287,7 @@
synchronized (mLock) {
checkSupportedLocked();
if (hasPendingRequestLocked(SwitchUserResponse.class, callback)) return;
- requestId = mNextRequestId++;
+ requestId = getNextRequestId();
EventLog.writeEvent(EventLogTags.CAR_USER_HAL_SWITCH_USER_REQ, requestId,
targetInfo.userId, timeoutMs);
propRequest = getPropRequestForSwitchUserLocked(requestId,
@@ -279,19 +295,7 @@
addPendingRequestLocked(requestId, SwitchUserResponse.class, callback);
}
- mHandler.sendMessageDelayed(
- obtainMessage(UserHalService::handleCheckIfRequestTimedOut, this, requestId)
- .setWhat(requestId),
- timeoutMs);
-
- try {
- if (DBG) Log.d(TAG, "Calling hal.set(): " + propRequest);
- mHal.set(propRequest);
- } catch (ServiceSpecificException e) {
- handleRemovePendingRequest(requestId);
- Log.w(TAG, "Failed to set ANDROID SWITCH", e);
- callback.onResponse(HalCallback.STATUS_HAL_SET_TIMEOUT, null);
- }
+ sendHalRequest(requestId, timeoutMs, propRequest, callback);
}
/**
@@ -340,7 +344,7 @@
VehiclePropValue propRequest;
synchronized (mLock) {
checkSupportedLocked();
- int requestId = mNextRequestId++;
+ int requestId = getNextRequestId();
EventLog.writeEvent(EventLogTags.CAR_USER_HAL_LEGACY_SWITCH_USER_REQ, requestId,
targetInfo.userId, usersInfo.currentUser.userId);
propRequest = getPropRequestForSwitchUserLocked(requestId,
@@ -355,12 +359,11 @@
}
}
- private VehiclePropValue getPropRequestForSwitchUserLocked(int requestId, int requestType,
- @NonNull UserInfo targetInfo, @NonNull UsersInfo usersInfo) {
+ private static VehiclePropValue getPropRequestForSwitchUserLocked(int requestId,
+ int requestType, @NonNull UserInfo targetInfo, @NonNull UsersInfo usersInfo) {
VehiclePropValue propRequest =
- UserHalHelper.createPropRequest(requestId, requestType, SWITCH_USER);
- propRequest.value.int32Values.add(targetInfo.userId);
- propRequest.value.int32Values.add(targetInfo.flags);
+ UserHalHelper.createPropRequest(SWITCH_USER, requestId, requestType);
+ UserHalHelper.addUserInfo(propRequest, targetInfo);
UserHalHelper.addUsersInfo(propRequest, usersInfo);
return propRequest;
}
@@ -388,7 +391,10 @@
types.put(type, true);
}
+ request.requestId = getNextRequestId();
+
if (DBG) Log.d(TAG, "getUserAssociation(): req=" + request);
+
VehiclePropValue requestAsPropValue = UserHalHelper.toVehiclePropValue(request);
EventLog.writeEvent(EventLogTags.CAR_USER_HAL_GET_USER_AUTH_REQ,
requestAsPropValue.value.int32Values.toArray());
@@ -399,22 +405,12 @@
return null;
}
- if (TextUtils.isEmpty(responseAsPropValue.value.stringValue)) {
- EventLog.writeEvent(EventLogTags.CAR_USER_HAL_GET_USER_AUTH_RESP,
- responseAsPropValue.value.int32Values.toArray());
- } else {
- // Must manually append the error message to the array of values
- int size = responseAsPropValue.value.int32Values.size();
- Object[] list = new Object[size + 1];
- responseAsPropValue.value.int32Values.toArray(list);
- list[list.length - 1] = responseAsPropValue.value.stringValue;
- EventLog.writeEvent(EventLogTags.CAR_USER_HAL_GET_USER_AUTH_RESP, list);
- }
+ logEventWithErrorMessage(EventLogTags.CAR_USER_HAL_GET_USER_AUTH_RESP, responseAsPropValue);
if (DBG) Log.d(TAG, "getUserAssociation(): responseAsPropValue=" + responseAsPropValue);
UserIdentificationResponse response;
try {
- response = UserHalHelper.toUserIdentificationGetResponse(responseAsPropValue);
+ response = UserHalHelper.toUserIdentificationResponse(responseAsPropValue);
} catch (IllegalArgumentException e) {
Log.w(TAG, "invalid response from HAL for " + requestAsPropValue, e);
return null;
@@ -422,6 +418,11 @@
if (DBG) Log.d(TAG, "getUserAssociation(): response=" + response);
// Validate the response according to the request
+ if (response.requestId != request.requestId) {
+ Log.w(TAG, "invalid request id (should be " + request.requestId + ") on HAL response: "
+ + response);
+ return null;
+ }
if (response.numberAssociation != request.numberAssociationTypes) {
Log.w(TAG, "Wrong number of association types on HAL response (expected "
+ request.numberAssociationTypes + ") for request " + requestAsPropValue
@@ -443,14 +444,138 @@
return response;
}
- @GuardedBy("mLock")
- private void addPendingRequestLocked(int requestId, @NonNull Class<?> responseClass,
- @NonNull HalCallback<?> callback) {
- if (DBG) {
- Log.d(TAG, "adding pending callback (of type " + responseClass.getName()
- + ") for request " + requestId);
+ /**
+ * Calls HAL to set the value of the user identifications associated with the given user.
+ *
+ * @throws IllegalArgumentException if request is invalid (mismatch on number of associations,
+ * duplicated association, invalid association type values, etc).
+ */
+ public void setUserAssociation(int timeoutMs, @NonNull UserIdentificationSetRequest request,
+ @NonNull HalCallback<UserIdentificationResponse> callback) {
+ if (DBG) Log.d(TAG, "setUserAssociation(" + request + ")");
+ Preconditions.checkArgumentPositive(timeoutMs, "timeout must be positive");
+ Objects.requireNonNull(request, "request cannot be null");
+ Objects.requireNonNull(callback, "callback cannot be null");
+
+ // Check that it doesn't have dupes
+ SparseBooleanArray types = new SparseBooleanArray(request.numberAssociations);
+ for (int i = 0; i < request.numberAssociations; i++) {
+ int type = request.associations.get(i).type;
+ Preconditions.checkArgument(!types.get(type), "type %s found more than once on %s",
+ UserIdentificationAssociationType.toString(type), request);
+ types.put(type, true);
}
- mPendingCallbacks.put(requestId, new Pair<>(responseClass, callback));
+
+ VehiclePropValue propRequest;
+ int requestId;
+ synchronized (mLock) {
+ checkSupportedLocked();
+ if (hasPendingRequestLocked(UserIdentificationResponse.class, callback)) return;
+ requestId = request.requestId = getNextRequestId();
+ propRequest = UserHalHelper.toVehiclePropValue(request);
+ EventLog.writeEvent(EventLogTags.CAR_USER_HAL_SET_USER_AUTH_REQ,
+ propRequest.value.int32Values.toArray());
+
+ addPendingRequestLocked(requestId, UserIdentificationSetRequest.class,
+ UserIdentificationResponse.class, request, callback);
+ }
+ sendHalRequest(requestId, timeoutMs, propRequest, callback);
+ }
+
+ private void handleOnUserIdentificationAssociation(@NonNull VehiclePropValue value) {
+ logEventWithErrorMessage(EventLogTags.CAR_USER_HAL_SET_USER_AUTH_RESP, value);
+ if (DBG) Log.d(TAG, "handleOnUserIdentificationAssociation(): " + value);
+
+ int requestId = value.value.int32Values.get(0);
+ HalCallback<UserIdentificationResponse> callback = handleGetPendingCallback(requestId,
+ UserIdentificationResponse.class);
+ if (callback == null) {
+ Log.w(TAG, "no callback for requestId " + requestId + ": " + value);
+ return;
+ }
+ PendingRequest<?, ?> pendingRequest = handleRemovePendingRequest(requestId);
+ UserIdentificationResponse response;
+ try {
+ response = UserHalHelper.toUserIdentificationResponse(value);
+ } catch (RuntimeException e) {
+ Log.w(TAG, "error parsing UserIdentificationResponse (" + value + ")", e);
+ callback.onResponse(HalCallback.STATUS_WRONG_HAL_RESPONSE, null);
+ return;
+ }
+
+ // Validate the response according to the request
+ UserIdentificationSetRequest request = PendingRequest.getRequest(pendingRequest,
+ UserIdentificationSetRequest.class, requestId);
+
+ if (request == null) {
+ // already logged on PendingRequest.getRequest
+ callback.onResponse(HalCallback.STATUS_WRONG_HAL_RESPONSE, null);
+ }
+
+ if (response.numberAssociation != request.numberAssociations) {
+ Log.w(TAG, "Wrong number of association types on HAL response (expected "
+ + request.numberAssociations + ") for request " + request
+ + ": " + response);
+ callback.onResponse(HalCallback.STATUS_WRONG_HAL_RESPONSE, null);
+ return;
+ }
+
+ for (int i = 0; i < request.numberAssociations; i++) {
+ int expectedType = request.associations.get(i).type;
+ int actualType = response.associations.get(i).type;
+ if (actualType != expectedType) {
+ Log.w(TAG, "Wrong type on index " + i + " of HAL response (" + response + ") for "
+ + "request " + value + " : expected "
+ + UserIdentificationAssociationType.toString(expectedType)
+ + ", got " + UserIdentificationAssociationType.toString(actualType));
+ callback.onResponse(HalCallback.STATUS_WRONG_HAL_RESPONSE, null);
+ return;
+ }
+ }
+
+
+ if (DBG) Log.d(TAG, "replying to request " + requestId + " with " + response);
+ callback.onResponse(HalCallback.STATUS_OK, response);
+ }
+
+ private static void logEventWithErrorMessage(int eventTag, @NonNull VehiclePropValue value) {
+ if (TextUtils.isEmpty(value.value.stringValue)) {
+ EventLog.writeEvent(eventTag, value.value.int32Values.toArray());
+ } else {
+ // Must manually append the error message to the array of values
+ int size = value.value.int32Values.size();
+ Object[] list = new Object[size + 1];
+ value.value.int32Values.toArray(list);
+ list[list.length - 1] = value.value.stringValue;
+ EventLog.writeEvent(eventTag, list);
+ }
+ }
+
+ @VisibleForTesting
+ int getNextRequestId() {
+ synchronized (mLock) {
+ return ++mNextRequestId;
+ }
+ }
+
+ @GuardedBy("mLock")
+ private <REQ, RESP> void addPendingRequestLocked(int requestId,
+ @NonNull Class<REQ> requestClass, @NonNull Class<RESP> responseClass,
+ @NonNull REQ request, @NonNull HalCallback<RESP> callback) {
+ PendingRequest<?, RESP> pendingRequest = new PendingRequest<>(responseClass, request,
+ callback);
+ if (DBG) {
+ Log.d(TAG, "adding pending request (" + pendingRequest + ") for requestId "
+ + requestId);
+ }
+ mPendingRequests.put(requestId, pendingRequest);
+ }
+
+ @GuardedBy("mLock")
+ private <RESP> void addPendingRequestLocked(int requestId, @NonNull Class<RESP> responseClass,
+ @NonNull HalCallback<RESP> callback) {
+ addPendingRequestLocked(requestId, Void.class, responseClass, /* request= */ null,
+ callback);
}
/**
@@ -458,12 +583,12 @@
* with {@link HalCallback#STATUS_CONCURRENT_OPERATION} when there is.
*/
@GuardedBy("mLock")
- private boolean hasPendingRequestLocked(@NonNull Class<?> requestClass,
+ private boolean hasPendingRequestLocked(@NonNull Class<?> responseClass,
@NonNull HalCallback<?> callback) {
- for (int i = 0; i < mPendingCallbacks.size(); i++) {
- Pair<Class<?>, HalCallback<?>> pair = mPendingCallbacks.valueAt(i);
- if (pair.first == requestClass) {
- Log.w(TAG, "Already have pending request of type " + requestClass);
+ for (int i = 0; i < mPendingRequests.size(); i++) {
+ PendingRequest<?, ?> pendingRequest = mPendingRequests.valueAt(i);
+ if (pendingRequest.responseClass == responseClass) {
+ Log.w(TAG, "Already have pending request of type " + responseClass);
callback.onResponse(HalCallback.STATUS_CONCURRENT_OPERATION, null);
return true;
}
@@ -474,27 +599,31 @@
/**
* Removes the pending request and its timeout callback.
*/
- private void handleRemovePendingRequest(int requestId) {
+ @Nullable
+ private PendingRequest<?, ?> handleRemovePendingRequest(int requestId) {
if (DBG) Log.d(TAG, "Removing pending request #" + requestId);
mHandler.removeMessages(requestId);
+ PendingRequest<?, ?> pendingRequest;
synchronized (mLock) {
- mPendingCallbacks.remove(requestId);
+ pendingRequest = mPendingRequests.get(requestId);
+ mPendingRequests.remove(requestId);
}
+ return pendingRequest;
}
private void handleCheckIfRequestTimedOut(int requestId) {
- Pair<Class<?>, HalCallback<?>> pair = getPendingCallback(requestId);
- if (pair == null) return;
+ PendingRequest<?, ?> pendingRequest = getPendingRequest(requestId);
+ if (pendingRequest == null) return;
Log.w(TAG, "Request #" + requestId + " timed out");
handleRemovePendingRequest(requestId);
- pair.second.onResponse(HalCallback.STATUS_HAL_RESPONSE_TIMEOUT, null);
+ pendingRequest.callback.onResponse(HalCallback.STATUS_HAL_RESPONSE_TIMEOUT, null);
}
@Nullable
- private Pair<Class<?>, HalCallback<?>> getPendingCallback(int requestId) {
+ private PendingRequest<?, ?> getPendingRequest(int requestId) {
synchronized (mLock) {
- return mPendingCallbacks.get(requestId);
+ return mPendingRequests.get(requestId);
}
}
@@ -545,6 +674,52 @@
private void handleOnSwitchUserResponse(VehiclePropValue value) {
int requestId = value.value.int32Values.get(0);
+ int messageType = value.value.int32Values.get(1);
+
+ if (messageType == SwitchUserMessageType.VEHICLE_RESPONSE) {
+ handleVehicleResponse(value);
+ return;
+ }
+
+ if (messageType == SwitchUserMessageType.VEHICLE_REQUEST) {
+ handleVehicleRequest(value);
+ return;
+ }
+
+ Log.e(TAG, "handleOnSwitchUserResponse invalid message type (" + messageType
+ + ") from HAL: " + value);
+
+ // check if a callback exists for the request ID
+ HalCallback<SwitchUserResponse> callback =
+ handleGetPendingCallback(requestId, SwitchUserResponse.class);
+ if (callback != null) {
+ handleRemovePendingRequest(requestId);
+ EventLog.writeEvent(EventLogTags.CAR_USER_HAL_SWITCH_USER_RESP, requestId,
+ HalCallback.STATUS_WRONG_HAL_RESPONSE, SwitchUserStatus.FAILURE);
+ callback.onResponse(HalCallback.STATUS_WRONG_HAL_RESPONSE, null);
+ return;
+ }
+ }
+
+ private void handleVehicleRequest(VehiclePropValue value) {
+ int requestId = value.value.int32Values.get(0);
+ // Index 1 is message type, which is not required in this call.
+ int targetUserId = value.value.int32Values.get(2);
+ EventLog.writeEvent(EventLogTags.CAR_USER_HAL_OEM_SWITCH_USER_REQ, requestId, targetUserId);
+
+ // HAL vehicle request should have negative request ID
+ if (requestId >= 0) {
+ Log.e(TAG, "handleVehicleRequest invalid requestId (" + requestId + ") from HAL: "
+ + value);
+ return;
+ }
+
+ CarUserService userService = CarLocalServices.getService(CarUserService.class);
+ userService.switchAndroidUserFromHal(requestId, targetUserId);
+ }
+
+ private void handleVehicleResponse(VehiclePropValue value) {
+ int requestId = value.value.int32Values.get(0);
HalCallback<SwitchUserResponse> callback =
handleGetPendingCallback(requestId, SwitchUserResponse.class);
if (callback == null) {
@@ -557,13 +732,6 @@
SwitchUserResponse response = new SwitchUserResponse();
response.requestId = requestId;
response.messageType = value.value.int32Values.get(1);
- if (response.messageType != SwitchUserMessageType.VEHICLE_RESPONSE) {
- EventLog.writeEvent(EventLogTags.CAR_USER_HAL_SWITCH_USER_RESP, requestId,
- HalCallback.STATUS_WRONG_HAL_RESPONSE);
- Log.e(TAG, "invalid message type (" + response.messageType + ") from HAL: " + value);
- callback.onResponse(HalCallback.STATUS_WRONG_HAL_RESPONSE, null);
- return;
- }
response.status = value.value.int32Values.get(2);
if (response.status == SwitchUserStatus.SUCCESS
|| response.status == SwitchUserStatus.FAILURE) {
@@ -582,17 +750,17 @@
}
private <T> HalCallback<T> handleGetPendingCallback(int requestId, Class<T> clazz) {
- Pair<Class<?>, HalCallback<?>> pair = getPendingCallback(requestId);
- if (pair == null) return null;
+ PendingRequest<?, ?> pendingRequest = getPendingRequest(requestId);
+ if (pendingRequest == null) return null;
- if (pair.first != clazz) {
- Slog.e(TAG, "Invalid callback class for request " + requestId + ": expected" + clazz
- + ", but got is " + pair.first);
+ if (pendingRequest.responseClass != clazz) {
+ Log.e(TAG, "Invalid callback class for request " + requestId + ": expected" + clazz
+ + ", but got is " + pendingRequest.responseClass);
// TODO(b/150413515): add unit test for this scenario once it supports other properties
return null;
}
@SuppressWarnings("unchecked")
- HalCallback<T> callback = (HalCallback<T>) pair.second;
+ HalCallback<T> callback = (HalCallback<T>) pendingRequest.callback;
return callback;
}
@@ -617,18 +785,81 @@
}
writer.printf("next request id: %d\n", mNextRequestId);
- if (mPendingCallbacks.size() == 0) {
+ int numberPendingCallbacks = mPendingRequests.size();
+ if (numberPendingCallbacks == 0) {
writer.println("no pending callbacks");
} else {
- writer.printf("pending callbacks: %s\n", mPendingCallbacks);
+ writer.printf("%d pending callbacks: %s\n", numberPendingCallbacks);
+ for (int i = 0; i < numberPendingCallbacks; i++) {
+ writer.print(indent);
+ mPendingRequests.valueAt(i).dump(writer);
+ writer.println();
+ }
}
}
}
- private void dumpSystemProperty(@NonNull PrintWriter writer, @NonNull String indent,
+ private static void dumpSystemProperty(@NonNull PrintWriter writer, @NonNull String indent,
@NonNull String name, Optional<?> prop) {
String value = prop.isPresent() ? prop.get().toString() : "<NOT SET>";
writer.printf("%s%s=%s\n", indent, name, value);
}
+ private static final class PendingRequest<REQ, RESP> {
+ @NonNull
+ public final Class<RESP> responseClass;
+
+ @Nullable
+ public final REQ request;
+
+ @NonNull
+ public final HalCallback<RESP> callback;
+
+ PendingRequest(@NonNull Class<RESP> responseClass, @Nullable REQ request,
+ @NonNull HalCallback<RESP> callback) {
+ this.responseClass = responseClass;
+ this.request = request;
+ this.callback = callback;
+ }
+
+ /**
+ * Gets the safely cast request for a given pending request.
+ */
+ @Nullable
+ private static <T> T getRequest(@Nullable PendingRequest<?, ?> pendingRequest,
+ @NonNull Class<T> clazz, int requestId) {
+ if (pendingRequest == null) {
+ Log.e(TAG, "No pending request for id " + requestId);
+ return null;
+
+ }
+ Object request = pendingRequest.request;
+ if (!clazz.isInstance(request)) {
+ Log.e(TAG, "Wrong pending request for id " + requestId + ": " + pendingRequest);
+ return null;
+ }
+ return clazz.cast(request);
+ }
+
+ public void dump(@NonNull PrintWriter pw) {
+ pw.printf("Class: %s Callback: %s", responseClass.getSimpleName(),
+ FunctionalUtils.getLambdaName(callback));
+ if (request != null) {
+ pw.printf(" Request: %s", request);
+ }
+ }
+
+ @Override
+ public String toString() {
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ pw.print("[PendingRequest: ");
+ dump(pw);
+ pw.print("]");
+ pw.flush();
+ return sw.toString();
+ }
+
+ }
+
}
diff --git a/service/src/com/android/car/hal/VehicleHal.java b/service/src/com/android/car/hal/VehicleHal.java
index 7e80e74..8706c00 100644
--- a/service/src/com/android/car/hal/VehicleHal.java
+++ b/service/src/com/android/car/hal/VehicleHal.java
@@ -60,6 +60,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -712,14 +713,16 @@
* @param property the Vehicle property Id as defined in the HAL
* @param zone Zone that this event services
* @param value Data value of the event
+ * @param delayTime Add a certain duration to event timestamp
*/
- public void injectVhalEvent(String property, String zone, String value)
+ public void injectVhalEvent(String property, String zone, String value, String delayTime)
throws NumberFormatException {
if (value == null || zone == null || property == null) {
return;
}
int propId = Integer.decode(property);
int zoneId = Integer.decode(zone);
+ int duration = Integer.decode(delayTime);
VehiclePropValue v = createPropValue(propId, zoneId);
int propertyType = propId & VehiclePropertyType.MASK;
// Values can be comma separated list
@@ -745,7 +748,7 @@
Log.e(CarLog.TAG_HAL, "Property type unsupported:" + propertyType);
return;
}
- v.timestamp = SystemClock.elapsedRealtimeNanos();
+ v.timestamp = SystemClock.elapsedRealtimeNanos() + TimeUnit.SECONDS.toNanos(duration);
onPropertyEvent(Lists.newArrayList(v));
}
diff --git a/service/src/com/android/car/user/CarUserService.java b/service/src/com/android/car/user/CarUserService.java
index 2ae56cb..d570ccb 100644
--- a/service/src/com/android/car/user/CarUserService.java
+++ b/service/src/com/android/car/user/CarUserService.java
@@ -33,12 +33,13 @@
import android.car.user.CarUserManager.UserLifecycleEvent;
import android.car.user.CarUserManager.UserLifecycleEventType;
import android.car.user.CarUserManager.UserLifecycleListener;
-import android.car.user.GetUserIdentificationAssociationResponse;
+import android.car.user.UserIdentificationAssociationResponse;
import android.car.user.UserSwitchResult;
import android.car.userlib.CarUserManagerHelper;
import android.car.userlib.CommonConstants.CarUserServiceConstants;
import android.car.userlib.HalCallback;
import android.car.userlib.UserHalHelper;
+import android.car.userlib.UserHelper;
import android.content.Context;
import android.content.pm.UserInfo;
import android.content.res.Resources;
@@ -48,6 +49,8 @@
import android.hardware.automotive.vehicle.V2_0.SwitchUserStatus;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationGetRequest;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationResponse;
+import android.hardware.automotive.vehicle.V2_0.UserIdentificationSetAssociation;
+import android.hardware.automotive.vehicle.V2_0.UserIdentificationSetRequest;
import android.hardware.automotive.vehicle.V2_0.UsersInfo;
import android.location.LocationManager;
import android.os.Binder;
@@ -60,6 +63,7 @@
import android.os.UserManager;
import android.provider.Settings;
import android.sysprop.CarProperties;
+import android.text.TextUtils;
import android.util.EventLog;
import android.util.Log;
import android.util.SparseArray;
@@ -867,7 +871,7 @@
}
@Override
- public GetUserIdentificationAssociationResponse getUserIdentificationAssociation(int[] types) {
+ public UserIdentificationAssociationResponse getUserIdentificationAssociation(int[] types) {
Preconditions.checkArgument(!ArrayUtils.isEmpty(types), "must have at least one type");
checkManageUsersPermission("getUserIdentificationAssociation");
@@ -888,7 +892,7 @@
if (halResponse == null) {
Log.w(TAG, "getUserIdentificationAssociation(): HAL returned null for "
+ Arrays.toString(types));
- return null;
+ return UserIdentificationAssociationResponse.forFailure();
}
int[] values = new int[halResponse.associations.size()];
@@ -897,7 +901,68 @@
}
EventLog.writeEvent(EventLogTags.CAR_USER_MGR_GET_USER_AUTH_RESP, values.length);
- return new GetUserIdentificationAssociationResponse(halResponse.errorMessage, values);
+ return UserIdentificationAssociationResponse.forSuccess(values, halResponse.errorMessage);
+ }
+
+ @Override
+ public void setUserIdentificationAssociation(int timeoutMs, int[] types, int[] values,
+ AndroidFuture<UserIdentificationAssociationResponse> result) {
+ Preconditions.checkArgument(!ArrayUtils.isEmpty(types), "must have at least one type");
+ Preconditions.checkArgument(!ArrayUtils.isEmpty(values), "must have at least one value");
+ if (types.length != values.length) {
+ throw new IllegalArgumentException("types (" + Arrays.toString(types) + ") and values ("
+ + Arrays.toString(values) + ") should have the same length");
+ }
+ checkManageUsersPermission("setUserIdentificationAssociation");
+
+ int uid = getCallingUid();
+ int userId = UserHandle.getUserId(uid);
+ EventLog.writeEvent(EventLogTags.CAR_USER_MGR_SET_USER_AUTH_REQ, uid, userId, types.length);
+
+ UserIdentificationSetRequest request = new UserIdentificationSetRequest();
+ request.userInfo.userId = userId;
+ request.userInfo.flags = getHalUserInfoFlags(userId);
+
+ request.numberAssociations = types.length;
+ for (int i = 0; i < types.length; i++) {
+ UserIdentificationSetAssociation association = new UserIdentificationSetAssociation();
+ association.type = types[i];
+ association.value = values[i];
+ request.associations.add(association);
+ }
+
+ mHal.setUserAssociation(timeoutMs, request, (status, resp) -> {
+ if (status != HalCallback.STATUS_OK) {
+ Log.w(TAG, "setUserIdentificationAssociation(): invalid callback status ("
+ + UserHalHelper.halCallbackStatusToString(status) + ") for response "
+ + resp);
+ if (resp == null || TextUtils.isEmpty(resp.errorMessage)) {
+ EventLog.writeEvent(EventLogTags.CAR_USER_MGR_SET_USER_AUTH_RESP, 0);
+ result.complete(UserIdentificationAssociationResponse.forFailure());
+ return;
+ }
+ EventLog.writeEvent(EventLogTags.CAR_USER_MGR_SET_USER_AUTH_RESP, 0,
+ resp.errorMessage);
+ result.complete(
+ UserIdentificationAssociationResponse.forFailure(resp.errorMessage));
+ return;
+ }
+ int respSize = resp.associations.size();
+ EventLog.writeEvent(EventLogTags.CAR_USER_MGR_SET_USER_AUTH_RESP, respSize,
+ resp.errorMessage);
+
+ int[] responseTypes = new int[respSize];
+ for (int i = 0; i < respSize; i++) {
+ responseTypes[i] = resp.associations.get(i).value;
+ }
+ UserIdentificationAssociationResponse response = UserIdentificationAssociationResponse
+ .forSuccess(responseTypes, resp.errorMessage);
+ if (Log.isLoggable(TAG_USER, Log.DEBUG)) {
+ Log.d(TAG, "setUserIdentificationAssociation(): resp= " + resp
+ + ", converted=" + response);
+ }
+ result.complete(response);
+ });
}
/**
@@ -931,6 +996,49 @@
receiver.complete(new UserSwitchResult(status, errorMessage));
}
+ /**
+ * Calls activity manager for user switch.
+ *
+ * <p><b>NOTE</b> This method is meant to be called just by UserHalService.
+ *
+ * @param requestId for the user switch request
+ * @param targetUserId of the target user
+ *
+ * @hide
+ */
+ public void switchAndroidUserFromHal(int requestId, @UserIdInt int targetUserId) {
+ EventLog.writeEvent(EventLogTags.CAR_USER_SVC_SWITCH_USER_FROM_HAL_REQ, requestId,
+ targetUserId);
+ Log.i(TAG_USER, "User hal requested a user switch. Target user id " + targetUserId);
+
+ try {
+ boolean result = mAm.switchUser(targetUserId);
+ if (result) {
+ updateUserSwitchInProcess(requestId, targetUserId);
+ } else {
+ postSwitchHalResponse(requestId, targetUserId);
+ }
+ } catch (RemoteException e) {
+ // ignore
+ Log.w(TAG_USER, "error while switching user " + targetUserId, e);
+ }
+ }
+
+ private void updateUserSwitchInProcess(int requestId, @UserIdInt int targetUserId) {
+ synchronized (mLockUser) {
+ if (mUserIdForUserSwitchInProcess != UserHandle.USER_NULL) {
+ // Some other user switch is in process.
+ if (Log.isLoggable(TAG_USER, Log.DEBUG)) {
+ Log.d(TAG_USER, "User switch for user: " + mUserIdForUserSwitchInProcess
+ + " is in process. Abandoning it as a new user switch is requested"
+ + " for the target user: " + targetUserId);
+ }
+ }
+ mUserIdForUserSwitchInProcess = targetUserId;
+ mRequestIdForUserSwitchInProcess = requestId;
+ }
+ }
+
private void postSwitchHalResponse(int requestId, @UserIdInt int targetUserId) {
UserInfo targetUser = mUserManager.getUserInfo(targetUserId);
UsersInfo usersInfo = getUsersInfo();
@@ -960,10 +1068,11 @@
@Override
public void setUserSwitchUiCallback(@NonNull IResultReceiver receiver) {
// TODO(b/154958003): check UID, only carSysUI should be allowed to set it.
+ checkManageUsersPermission("setUserSwitchUiCallback");
mUserSwitchUiReceiver = receiver;
}
- // TODO(b/144120654): use helper to generate UsersInfo
+ // TODO(b/150413515): use helper to generate UsersInfo
private UsersInfo getUsersInfo() {
UserInfo currentUser;
try {
@@ -975,7 +1084,7 @@
return getUsersInfo(currentUser);
}
- // TODO(b/144120654): use helper to generate UsersInfo
+ // TODO(b/150413515): use helper to generate UsersInfo
private UsersInfo getUsersInfo(@NonNull UserInfo currentUser) {
List<UserInfo> existingUsers = mUserManager.getUsers();
int size = existingUsers.size();
@@ -1303,7 +1412,7 @@
// Switch HAL users if user switch is not requested by CarUserService
notifyHalLegacySwitch(fromUserId, toUserId);
- if (!isSystemUser(toUserId)) {
+ if (!UserHelper.isHeadlessSystemUser(toUserId)) {
mCarUserManagerHelper.setLastActiveUser(toUserId);
}
if (mLastPassengerId != UserHandle.USER_NULL) {
diff --git a/service/src/com/android/car/user/UserMetrics.java b/service/src/com/android/car/user/UserMetrics.java
index adba813..62b9755 100644
--- a/service/src/com/android/car/user/UserMetrics.java
+++ b/service/src/com/android/car/user/UserMetrics.java
@@ -65,7 +65,7 @@
// garage mode
private static final int INITIAL_CAPACITY = 2;
- // TODO(b/144120654): read from resources
+ // TODO(b/150413515): read from resources
private static final int LOG_SIZE = 10;
private final Object mLock = new Object();
diff --git a/tests/BugReportApp/res/values-ky/strings.xml b/tests/BugReportApp/res/values-ky/strings.xml
index 6ef7370..0cdce1c 100644
--- a/tests/BugReportApp/res/values-ky/strings.xml
+++ b/tests/BugReportApp/res/values-ky/strings.xml
@@ -17,7 +17,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="2596316479611335185">"Мүчүлүштүк тууралуу кабар берүү"</string>
+ <string name="app_name" msgid="2596316479611335185">"Мүчүлүштүк тууралуу кабарлоо"</string>
<string name="bugreport_info_quit" msgid="5590138890181142473">"Жабуу"</string>
<string name="bugreport_info_start" msgid="667324824650830832">"Мүчүлүштүк тууралуу кабарды берип баштоо"</string>
<string name="bugreport_info_status" msgid="7211044508792815451">"Абалы:"</string>
@@ -45,5 +45,5 @@
<string name="toast_status_dump_state_failed" msgid="8072469535227541761">"Абал тууралуу маалымат алынган жок"</string>
<string name="notification_bugreport_in_progress" msgid="8486454116357963238">"Мүчүлүштүк тууралуу кабар даярдалууда"</string>
<string name="notification_bugreport_finished_title" msgid="3970195939909624320">"Мүчүлүштүк тууралуу кабар алынды"</string>
- <string name="notification_bugreport_channel_name" msgid="776902295433824255">"Мүчүлүштүк тууралуу кабар берүү абалынын каналы"</string>
+ <string name="notification_bugreport_channel_name" msgid="776902295433824255">"Мүчүлүштүк тууралуу кабарлоо абалынын каналы"</string>
</resources>
diff --git a/tests/CarDeveloperOptions/res/values-ar/strings.xml b/tests/CarDeveloperOptions/res/values-ar/strings.xml
index 0663154..2333cec 100644
--- a/tests/CarDeveloperOptions/res/values-ar/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-ar/strings.xml
@@ -212,7 +212,7 @@
<string name="proxy_error_empty_host_set_port" msgid="8471455809508588255">"يجب أن يكون حقل المنفذ فارغًا إذا كان حقل المضيف فارغًا."</string>
<string name="proxy_error_invalid_port" msgid="4046559920586100637">"المنفذ الذي كتبته غير صالح."</string>
<string name="proxy_warning_limited_support" msgid="9026539134219095768">"يتم استخدام الخادم الوكيل HTTP على المتصفّح، ولكن قد لا تستخدمه التطبيقات الأخرى."</string>
- <string name="proxy_url_title" msgid="882042361706435904">"عنوان URL لتهيئة PAC: "</string>
+ <string name="proxy_url_title" msgid="882042361706435904">"عنوان URL لإعداد PAC: "</string>
<string name="radio_info_dl_kbps" msgid="2903778264453410272">"معدّل نقل بيانات DL (كيلوبت في الثانية):"</string>
<string name="radio_info_ul_kbps" msgid="3802245899811732716">"معدّل نقل بيانات UL (كيلوبت في الثانية):"</string>
<string name="radio_info_signal_location_label" msgid="6788144906873498013">"معلومات الموقع الخلوية (تم الإيقاف):"</string>
@@ -1246,7 +1246,7 @@
<string name="color_mode_title" msgid="8164858320869449142">"الألوان"</string>
<string name="color_mode_option_natural" msgid="1292837781836645320">"طبيعي"</string>
<string name="color_mode_option_boosted" msgid="453557938434778933">"مُحسن"</string>
- <string name="color_mode_option_saturated" msgid="7758384943407859851">"مُشبع"</string>
+ <string name="color_mode_option_saturated" msgid="7758384943407859851">"مُشبعة"</string>
<string name="color_mode_option_automatic" msgid="6572718611315165117">"توافقي"</string>
<string name="color_mode_summary_natural" msgid="1247153893843263340">"استخدام الألوان الدقيقة فقط"</string>
<string name="color_mode_summary_automatic" msgid="6066740785261330514">"ضبط إلى التبديل بين الألوان الزاهية والدقيقة"</string>
@@ -1489,7 +1489,7 @@
<string name="storage_menu_format" msgid="4285487419855632896">"تهيئة"</string>
<string name="storage_menu_format_public" msgid="5361388353980722971">"تهيئة كوحدة تخزين محمولة"</string>
<string name="storage_menu_format_private" msgid="5288599205435858720">"تهيئة كوحدة تخزين داخلية"</string>
- <string name="storage_menu_migrate" msgid="1885806122515759703">"ترحيل البيانات"</string>
+ <string name="storage_menu_migrate" msgid="1885806122515759703">"نقل البيانات"</string>
<string name="storage_menu_forget" msgid="4345021250834642640">"حذف"</string>
<string name="storage_menu_set_up" msgid="2849170579745958513">"إعداد"</string>
<string name="storage_menu_explore" msgid="3733439525636202662">"استكشاف"</string>
@@ -1719,7 +1719,7 @@
<string name="network_scorer_change_active_dialog_text" msgid="4264089809189760730">"هل تريد استخدام <xliff:g id="NEW_APP">%1$s</xliff:g> بدلاً من <xliff:g id="CURRENT_APP">%2$s</xliff:g> لإدارة اتصالات الشبكة لديك؟"</string>
<string name="network_scorer_change_active_no_previous_dialog_text" msgid="6394483538843474495">"هل تريد استخدام <xliff:g id="NEW_APP">%s</xliff:g> لإدارة اتصالات الشبكة لديك؟"</string>
<string name="mobile_unknown_sim_operator" msgid="872589370085135817">"مشغل SIM (مشغل شبكة الجوّال) غير معروف"</string>
- <string name="mobile_no_provisioning_url" msgid="3216517414902166131">"ليس لدى <xliff:g id="OPERATOR">%1$s</xliff:g> موقع ويب معروف لإدارة حسابات"</string>
+ <string name="mobile_no_provisioning_url" msgid="3216517414902166131">"ليس لدى <xliff:g id="OPERATOR">%1$s</xliff:g> موقع إلكتروني معروف لإدارة حسابات"</string>
<string name="mobile_insert_sim_card" msgid="7594550403454243732">"يُرجى إدخال شريحة SIM وإعادة التشغيل"</string>
<string name="mobile_connect_to_internet" msgid="6031886097365170913">"يُرجى الاتصال بالإنترنت"</string>
<string name="location_title" msgid="8664674161765477168">"موقعي"</string>
@@ -1961,7 +1961,7 @@
<string name="move_app_to_internal" product="default" msgid="1031111519418252055">"نقل إلى الهاتف"</string>
<string name="move_app_to_sdcard" product="nosdcard" msgid="5555917755995563518">"نقل إلى وحدة تخزين USB"</string>
<string name="move_app_to_sdcard" product="default" msgid="2348845109583354505">"نقل إلى بطاقة SD"</string>
- <string name="another_migration_already_in_progress" msgid="3159694008286196454">"هناك عملية ترحيل أخرى قيد التقدم حاليًا."</string>
+ <string name="another_migration_already_in_progress" msgid="3159694008286196454">"هناك عملية نقل أخرى قيد التقدم حاليًا."</string>
<string name="insufficient_storage" msgid="7089626244018569405">"ليست هناك مساحة تخزين كافية."</string>
<string name="does_not_exist" msgid="4821267479183197109">"التطبيق غير موجود."</string>
<string name="invalid_location" msgid="8057409982223429673">"موقع التثبيت غير صالح."</string>
diff --git a/tests/CarDeveloperOptions/res/values-as/strings.xml b/tests/CarDeveloperOptions/res/values-as/strings.xml
index 3ee41f5..7e69418 100644
--- a/tests/CarDeveloperOptions/res/values-as/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-as/strings.xml
@@ -4473,7 +4473,7 @@
<string name="privacy_dashboard_title" msgid="8764930992456607513">"গোপনীয়তা"</string>
<string name="privacy_dashboard_summary" msgid="7916431309860824945">"অনুমতি, একাউণ্টৰ কাৰ্যকলাপ, ব্যক্তিগত ডেটা"</string>
<string name="contextual_card_dismiss_remove" msgid="1750420285615827309">"আঁতৰাওক"</string>
- <string name="contextual_card_dismiss_keep" msgid="3204450672928193661">"ৰাখক"</string>
+ <string name="contextual_card_dismiss_keep" msgid="3204450672928193661">"Keep"</string>
<string name="contextual_card_dismiss_confirm_message" msgid="2352465079667730312">"এই পৰামৰ্শটো আঁতৰাবনে?"</string>
<string name="contextual_card_removed_message" msgid="4047307820743366876">"পৰামৰ্শ আঁতৰোৱা হ’ল"</string>
<string name="contextual_card_undo_dismissal_text" msgid="5009245286931852012">"আনডু কৰক"</string>
diff --git a/tests/CarDeveloperOptions/res/values-az/strings.xml b/tests/CarDeveloperOptions/res/values-az/strings.xml
index 36dcec9..f7b6517 100644
--- a/tests/CarDeveloperOptions/res/values-az/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-az/strings.xml
@@ -940,7 +940,7 @@
<string name="wifi_dpp_scan_qr_code_join_network" msgid="3085162928804379545">"\"<xliff:g id="SSID">%1$s</xliff:g>\" şəbəkəsinə qoşulmaq üçün aşağıdakı QR kodunu kameranın mərkəzinə tutun"</string>
<string name="wifi_dpp_scan_qr_code_join_unknown_network" msgid="5682308317067290738">"QR kodunu skan etməklə Wi‑Fi şəbəkəsinə qoşulun"</string>
<string name="wifi_dpp_share_wifi" msgid="1724161216219646284">"Wi‑Fi şəbəkəsini paylaşın"</string>
- <string name="wifi_dpp_scan_qr_code_with_another_device" msgid="4357387474444884759">"\"<xliff:g id="SSID">%1$s</xliff:g>\" şəbəkəsinə qoşulmaq və parolu paylaşmaq üçün bu QR kodu skan edin"</string>
+ <string name="wifi_dpp_scan_qr_code_with_another_device" msgid="4357387474444884759">"\"<xliff:g id="SSID">%1$s</xliff:g>\" şəbəkəsinə qoşulmaq və parolu paylaşmaq üçün bu QR kodunu skan edin"</string>
<string name="wifi_dpp_scan_open_network_qr_code_with_another_device" msgid="572011882416511818">"\"<xliff:g id="SSID">%1$s</xliff:g>\" şəbəkəsinə qoşulmaq üçün bu QR kodu skan edin"</string>
<string name="wifi_dpp_could_not_detect_valid_qr_code" msgid="27667719861826438">"QR kodunu oxumaq mümkün olmadı. Kodu mərkəzə tutduqdan sonra yenidən cəhd edin"</string>
<string name="wifi_dpp_failure_authentication_or_configuration" msgid="9142051662156233679">"Yenidən cəhd edin. Problem davam edərsə, cihaz istehsalçısı ilə əlaqə saxlayın"</string>
@@ -2281,7 +2281,7 @@
<string name="battery_tip_early_heads_up_summary" msgid="4231489566422395156">"Batareya həmişə olduğundan daha tez bitə bilər"</string>
<string name="battery_tip_early_heads_up_done_title" msgid="112550885882648429">"Batareya Qənaəti aktivdir"</string>
<string name="battery_tip_early_heads_up_done_summary" msgid="8692257022962771181">"Bəzi funksiyalar məhddudlaşdırıla bilər"</string>
- <string name="battery_tip_high_usage_title" product="default" msgid="4103005178310487352">"Telefon həddindən çox istifadə etdi"</string>
+ <string name="battery_tip_high_usage_title" product="default" msgid="4103005178310487352">"Telefon gərəkdiyindən daha çox işlədib"</string>
<string name="battery_tip_high_usage_title" product="tablet" msgid="1019583260005768965">"Planşet hədindən çox istifadə etdi"</string>
<string name="battery_tip_high_usage_title" product="device" msgid="8304138287288309490">"Cihaz həddindən çox istifadə etdi"</string>
<string name="battery_tip_high_usage_summary" msgid="5514749872957528189">"Batareya həmişə olduğundan daha tez bitə bilər"</string>
diff --git a/tests/CarDeveloperOptions/res/values-b+sr+Latn/strings.xml b/tests/CarDeveloperOptions/res/values-b+sr+Latn/strings.xml
index bb6abb3..ba73640 100644
--- a/tests/CarDeveloperOptions/res/values-b+sr+Latn/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-b+sr+Latn/strings.xml
@@ -506,7 +506,7 @@
<string name="fingerprint_delete_title" msgid="3120894112324235536">"Uklonite „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“"</string>
<string name="fingerprint_delete_message" msgid="5895802741486967970">"Želite li da izbrišete ovaj otisak prsta?"</string>
<string name="fingerprint_last_delete_message" msgid="3346252479778971442">"Nećete moći da otključavate telefon, odobravate kupovine niti da se prijavljujete u aplikacije pomoću otisaka prstiju"</string>
- <string name="fingerprint_last_delete_message_profile_challenge" msgid="5385095150532247025">"Nećete moći da otključavate profil za Work, odobravate kupovine niti da se prijavljujete u aplikacije za Work pomoću otisaka prstiju"</string>
+ <string name="fingerprint_last_delete_message_profile_challenge" msgid="5385095150532247025">"Nećete moći da otključavate poslovni profil, odobravate kupovine niti da se prijavljujete u poslovne aplikacije pomoću otisaka prstiju"</string>
<string name="fingerprint_last_delete_confirm" msgid="7984595457589664004">"Da, ukloni"</string>
<string name="crypt_keeper_settings_title" msgid="839783588093862748">"Šifrovanje"</string>
<string name="crypt_keeper_encrypt_title" product="tablet" msgid="2292129135369853167">"Šifruj tablet"</string>
@@ -548,7 +548,7 @@
<string name="suggested_fingerprint_lock_settings_summary" product="device" msgid="8114514312665251311"></string>
<string name="suggested_fingerprint_lock_settings_summary" product="default" msgid="8114514312665251311"></string>
<string name="lock_settings_picker_title" msgid="1034741644461982205">"Zaključavanje ekrana"</string>
- <string name="lock_settings_picker_title_profile" msgid="5086594364428782115">"Izaberite zaključavanje za Work"</string>
+ <string name="lock_settings_picker_title_profile" msgid="5086594364428782115">"Izaberite zaključavanje za posao"</string>
<string name="setup_lock_settings_picker_title" product="tablet" msgid="2429667472335773519">"Zaštitite tablet"</string>
<string name="setup_lock_settings_picker_title" product="device" msgid="4739290104106645233">"Zaštitite uređaj"</string>
<string name="setup_lock_settings_picker_title" product="default" msgid="3911582328576859628">"Zaštitite telefon"</string>
@@ -563,7 +563,7 @@
<string name="unlock_set_unlock_launch_picker_title" msgid="2731152716948003853">"Zaključavanje ekrana"</string>
<string name="unlock_set_unlock_launch_picker_summary_lock_immediately" msgid="5596186270725220642">"<xliff:g id="UNLOCK_METHOD">%1$s</xliff:g>/odmah posle spavanja"</string>
<string name="unlock_set_unlock_launch_picker_summary_lock_after_timeout" msgid="3861167251234952373">"<xliff:g id="UNLOCK_METHOD">%1$s</xliff:g>/<xliff:g id="TIMEOUT_STRING">%2$s</xliff:g> posle spavanja"</string>
- <string name="unlock_set_unlock_launch_picker_title_profile" msgid="7976345264630422921">"Zaključavanje profila za Work"</string>
+ <string name="unlock_set_unlock_launch_picker_title_profile" msgid="7976345264630422921">"Zaključavanje poslovnog profila"</string>
<string name="unlock_set_unlock_launch_picker_change_title" msgid="32310692507029407">"Promena zaključ. ekrana"</string>
<string name="unlock_set_unlock_launch_picker_change_summary" msgid="2072792784866320522">"Menjanje ili onemogućavanje šablona, PIN koda ili bezbednosti lozinke"</string>
<string name="unlock_set_unlock_launch_picker_enable_summary" msgid="9070847611379078795">"Izaberite metod zaključavanja ekrana"</string>
@@ -647,12 +647,12 @@
<string name="lock_last_pattern_attempt_before_wipe_user" msgid="5194192938934564218">"Ako u sledećem pokušaju unesete netačan šablon, izbrisaćemo ovog korisnika"</string>
<string name="lock_last_pin_attempt_before_wipe_user" msgid="7833852187363499906">"Ako u sledećem pokušaju unesete netačan PIN, izbrisaćemo ovog korisnika"</string>
<string name="lock_last_password_attempt_before_wipe_user" msgid="8979742220140001204">"Ako u sledećem pokušaju unesete netačnu lozinku, izbrisaćemo ovog korisnika"</string>
- <string name="lock_last_pattern_attempt_before_wipe_profile" msgid="3877613047631174576">"Ako u sledećem pokušaju unesete netačan šablon, izbrisaćemo profil za Work i njegove podatke"</string>
- <string name="lock_last_pin_attempt_before_wipe_profile" msgid="8132438288175428168">"Ako u sledećem pokušaju unesete netačan PIN, izbrisaćemo profil za Work i njegove podatke"</string>
- <string name="lock_last_password_attempt_before_wipe_profile" msgid="1535128774464384305">"Ako u sledećem pokušaju unesete netačnu lozinku, izbrisaćemo profil za Work i njegove podatke"</string>
+ <string name="lock_last_pattern_attempt_before_wipe_profile" msgid="3877613047631174576">"Ako u sledećem pokušaju unesete netačan šablon, izbrisaćemo poslovni profil i njegove podatke"</string>
+ <string name="lock_last_pin_attempt_before_wipe_profile" msgid="8132438288175428168">"Ako u sledećem pokušaju unesete netačan PIN, izbrisaćemo poslovni profil i njegove podatke"</string>
+ <string name="lock_last_password_attempt_before_wipe_profile" msgid="1535128774464384305">"Ako u sledećem pokušaju unesete netačnu lozinku, izbrisaćemo poslovni profil i njegove podatke"</string>
<string name="lock_failed_attempts_now_wiping_device" msgid="8662360098784762828">"Previše netačnih pokušaja. Izbrisaćemo podatke sa ovog uređaja."</string>
<string name="lock_failed_attempts_now_wiping_user" msgid="3793513796171561873">"Previše netačnih pokušaja. Izbrisaćemo ovog korisnika."</string>
- <string name="lock_failed_attempts_now_wiping_profile" msgid="5347108525299038285">"Previše netačnih pokušaja. Izbrisaćemo ovaj profil za Work i njegove podatke."</string>
+ <string name="lock_failed_attempts_now_wiping_profile" msgid="5347108525299038285">"Previše netačnih pokušaja. Izbrisaćemo ovaj poslovni profil i njegove podatke."</string>
<string name="lock_failed_attempts_now_wiping_dialog_dismiss" msgid="3950582268749037318">"Odbaci"</string>
<plurals name="lockpassword_password_too_short" formatted="false" msgid="694091983183310827">
<item quantity="one">Mora da sadrži najmanje <xliff:g id="COUNT_1">%d</xliff:g> znak</item>
@@ -962,8 +962,8 @@
<string name="wifi_dpp_could_not_detect_valid_qr_code" msgid="27667719861826438">"Čitanje QR koda nije uspelo. Ponovo centrirajte kôd, pa probajte ponovo"</string>
<string name="wifi_dpp_failure_authentication_or_configuration" msgid="9142051662156233679">"Probajte ponovo. Ako se problem nastavi, kontaktirajte proizvođača uređaja"</string>
<string name="wifi_dpp_failure_not_compatible" msgid="4320027179973678283">"Došlo je do greške"</string>
- <string name="wifi_dpp_failure_timeout" msgid="5060065168142109420">"Uverite se da je uređaj priključen na izvor napajanja, napunjen i uključen"</string>
- <string name="wifi_dpp_failure_generic" msgid="7840142544736640189">"Uverite se da je uređaj priključen na izvor napajanja, napunjen i uključen. Ako se problem nastavi, kontaktirajte proizvođača uređaja"</string>
+ <string name="wifi_dpp_failure_timeout" msgid="5060065168142109420">"Uverite se da je uređaj priključen na struju, napunjen i uključen"</string>
+ <string name="wifi_dpp_failure_generic" msgid="7840142544736640189">"Uverite se da je uređaj priključen na struju, napunjen i uključen. Ako se problem nastavi, kontaktirajte proizvođača uređaja"</string>
<string name="wifi_dpp_failure_not_supported" msgid="111779621766171626">"Ovaj uređaj ne podržava dodavanje mreže „<xliff:g id="SSID">%1$s</xliff:g>“"</string>
<string name="wifi_dpp_check_connection_try_again" msgid="7144663015219170999">"Proverite vezu i probajte ponovo"</string>
<string name="wifi_dpp_choose_network" msgid="6251424431594491691">"Odaberite mrežu"</string>
@@ -980,7 +980,7 @@
<string name="wifi_dpp_lockscreen_title" msgid="3910665850075275963">"Potvrdite da ste to vi"</string>
<string name="wifi_dpp_wifi_password" msgid="8007558344032612455">"Lozinka za Wi-Fi: <xliff:g id="PASSWORD">%1$s</xliff:g>"</string>
<string name="wifi_dpp_hotspot_password" msgid="6172326289042241924">"Lozinka hotspota: <xliff:g id="PASSWORD">%1$s</xliff:g>"</string>
- <string name="wifi_dpp_add_device" msgid="1347056725253936358">"Dodajte uređaj"</string>
+ <string name="wifi_dpp_add_device" msgid="1347056725253936358">"Dodaj uređaj"</string>
<string name="wifi_dpp_connect_network_using_qr_code" msgid="115993715600532357">"Povežite se na ovu mrežu pomoću QR koda"</string>
<string name="retry" msgid="8500839563577344702">"Probaj ponovo"</string>
<string name="wifi_shared" msgid="5054256778276524960">"Deli sa drugim korisnicima uređaja"</string>
@@ -1629,17 +1629,17 @@
<string name="master_clear_progress_text" msgid="5418958116008976218">"Sačekajte..."</string>
<string name="call_settings_title" msgid="5033906789261282752">"Podešavanja poziva"</string>
<string name="call_settings_summary" msgid="2119161087671450035">"Podešavanje glasovne pošte, preusmeravanja poziva, stavljanja poziva na čekanje, ID-a pozivaoca"</string>
- <string name="tether_settings_title_usb" msgid="4265582654602420357">"USB Internet povezivanje"</string>
+ <string name="tether_settings_title_usb" msgid="4265582654602420357">"USB privezivanje"</string>
<string name="tether_settings_title_wifi" msgid="2060965130234484613">"Prenosni hotspot"</string>
<string name="tether_settings_title_bluetooth" msgid="1999590158102569959">"Bluetooth privezivanje"</string>
- <string name="tether_settings_title_usb_bluetooth" msgid="1159128764162788159">"Povezivanje sa internetom"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="1159128764162788159">"Privezivanje"</string>
<string name="tether_settings_title_all" msgid="6935843543433954181">"Hotspot i privezivanje"</string>
<string name="tether_settings_summary_hotspot_on_tether_on" msgid="1289593649526514499">"Hotspot je uključen, privezivanje"</string>
<string name="tether_settings_summary_hotspot_on_tether_off" msgid="8010689354668285422">"Hotspot je uključen"</string>
<string name="tether_settings_summary_hotspot_off_tether_on" msgid="1349909238672649877">"Privezivanje"</string>
<string name="tether_settings_disabled_on_data_saver" msgid="3682544845899910726">"Nije moguće privezivanje niti korišćenje prenosivih hotspotova dok je Ušteda podataka uključena"</string>
<string name="usb_title" msgid="7480927657535578688">"USB"</string>
- <string name="usb_tethering_button_text" msgid="6242228383142012332">"USB povezivanje"</string>
+ <string name="usb_tethering_button_text" msgid="6242228383142012332">"USB privezivanje"</string>
<string name="usb_tethering_subtext" product="default" msgid="1573513260339548671">"Deljenje internet veze telefona preko USB-a"</string>
<string name="usb_tethering_subtext" product="tablet" msgid="154536000235361034">"Deljenje internet veze tableta preko USB-a"</string>
<string name="bluetooth_tether_checkbox_text" msgid="7257293066139372774">"Bluetooth privezivanje"</string>
@@ -1749,15 +1749,15 @@
<string name="lockpassword_confirm_your_pattern_generic" msgid="6146545393074070916">"Upotrebite šablon za uređaj da biste nastavili"</string>
<string name="lockpassword_confirm_your_pin_generic" msgid="8732268389177735264">"Unesite PIN uređaja da biste nastavili"</string>
<string name="lockpassword_confirm_your_password_generic" msgid="6304552647060899594">"Unesite lozinku uređaja da biste nastavili"</string>
- <string name="lockpassword_confirm_your_pattern_generic_profile" msgid="3074250084050465513">"Upotrebite šablon za profil za Work da biste nastavili"</string>
- <string name="lockpassword_confirm_your_pin_generic_profile" msgid="6037908971086439523">"Unesite PIN za profil za Work da biste nastavili"</string>
- <string name="lockpassword_confirm_your_password_generic_profile" msgid="2646162490703489685">"Unesite lozinku za profil za Work da biste nastavili"</string>
+ <string name="lockpassword_confirm_your_pattern_generic_profile" msgid="3074250084050465513">"Upotrebite šablon za poslovni profil da biste nastavili"</string>
+ <string name="lockpassword_confirm_your_pin_generic_profile" msgid="6037908971086439523">"Unesite PIN za poslovni profil da biste nastavili"</string>
+ <string name="lockpassword_confirm_your_password_generic_profile" msgid="2646162490703489685">"Unesite lozinku za poslovni profil da biste nastavili"</string>
<string name="lockpassword_strong_auth_required_device_pattern" msgid="1014214190135045781">"Radi veće bezbednosti koristite šablon za uređaj"</string>
<string name="lockpassword_strong_auth_required_device_pin" msgid="24030584350601016">"Radi veće bezbednosti unesite PIN za uređaj"</string>
<string name="lockpassword_strong_auth_required_device_password" msgid="7746588206458754598">"Radi veće bezbednosti unesite lozinku za uređaj"</string>
- <string name="lockpassword_strong_auth_required_work_pattern" msgid="6861154706098327320">"Radi veće bezbednosti koristite šablon za Work"</string>
- <string name="lockpassword_strong_auth_required_work_pin" msgid="6306902249365524526">"Radi veće bezbednosti unesite PIN za Work"</string>
- <string name="lockpassword_strong_auth_required_work_password" msgid="2917338218971012776">"Radi veće bezbednosti unesite lozinku za Work"</string>
+ <string name="lockpassword_strong_auth_required_work_pattern" msgid="6861154706098327320">"Radi veće bezbednosti koristite šablon za posao"</string>
+ <string name="lockpassword_strong_auth_required_work_pin" msgid="6306902249365524526">"Radi veće bezbednosti unesite poslovni PIN"</string>
+ <string name="lockpassword_strong_auth_required_work_password" msgid="2917338218971012776">"Radi veće bezbednosti unesite poslovnu lozinku"</string>
<string name="lockpassword_confirm_your_pattern_details_frp" msgid="1085862410379709928">"Telefon je resetovan na fabrička podešavanja. Da biste ga koristili, unesite prethodni šablon."</string>
<string name="lockpassword_confirm_your_pin_details_frp" msgid="6849889353126558761">"Telefon je resetovan na fabrička podešavanja. Da biste ga koristili, unesite prethodni PIN."</string>
<string name="lockpassword_confirm_your_password_details_frp" msgid="3239944795659418737">"Telefon je resetovan na fabrička podešavanja. Da biste ga koristili, unesite prethodnu lozinku."</string>
@@ -1794,13 +1794,13 @@
<string name="lockpattern_settings_help_how_to_record" msgid="6037403647312543908">"Kako nacrtati šablon za otključavanje"</string>
<string name="lockpattern_too_many_failed_confirmation_attempts" msgid="3043127997770535921">"Previše netačnih pokušaja. Probajte ponovo za <xliff:g id="NUMBER">%d</xliff:g> sek."</string>
<string name="activity_not_found" msgid="3492413375341165453">"Aplikacija nije instalirana na telefonu."</string>
- <string name="lock_settings_profile_title" msgid="3928992050074556160">"Bezbednost profila za Work"</string>
- <string name="lock_settings_profile_screen_lock_title" msgid="285267471459162203">"Zaključavanje ekrana za profil za Work"</string>
+ <string name="lock_settings_profile_title" msgid="3928992050074556160">"Bezbednost poslovnog profila"</string>
+ <string name="lock_settings_profile_screen_lock_title" msgid="285267471459162203">"Zaključavanje ekrana za poslovni profil"</string>
<string name="lock_settings_profile_unification_title" msgid="2629698644191935287">"Koristi jedno zaključavanje"</string>
- <string name="lock_settings_profile_unification_summary" msgid="4797188229308317207">"Koristite jedno zaključavanje ekrana za profil za Work i uređaj"</string>
+ <string name="lock_settings_profile_unification_summary" msgid="4797188229308317207">"Koristite jedno zaključavanje ekrana za poslovni profil i uređaj"</string>
<string name="lock_settings_profile_unification_dialog_title" msgid="1690211342491067179">"Želite li da koristite jedno zaključavanje?"</string>
- <string name="lock_settings_profile_unification_dialog_body" msgid="8629158560032603101">"Uređaj će koristiti zaključavanje ekrana za Work profil. Smernice za Work će se primenjivati na oba zaključavanja."</string>
- <string name="lock_settings_profile_unification_dialog_uncompliant_body" msgid="1217609779267643474">"Zaključavanje ekrana za profil za Work nije u skladu sa bezbednosnim zahtevima vaše organizacije. Možete da koristite isto zaključavanje ekrana za uređaj i profil za Work, ali će se primenjivati sve smernice za zaključavanje ekrana za Work."</string>
+ <string name="lock_settings_profile_unification_dialog_body" msgid="8629158560032603101">"Uređaj će koristiti zaključavanje ekrana za poslovni profil. Smernice za posao će se primenjivati na oba zaključavanja."</string>
+ <string name="lock_settings_profile_unification_dialog_uncompliant_body" msgid="1217609779267643474">"Zaključavanje ekrana za poslovni profil nije u skladu sa bezbednosnim zahtevima vaše organizacije. Možete da koristite isto zaključavanje ekrana za uređaj i poslovni profil, ali će se primenjivati sve smernice za zaključavanje ekrana za posao."</string>
<string name="lock_settings_profile_unification_dialog_confirm" msgid="888942752619181804">"Koristi jedno zaključavanje"</string>
<string name="lock_settings_profile_unification_dialog_uncompliant_confirm" msgid="8046452284593057185">"Koristi jedno zaključavanje"</string>
<string name="lock_settings_profile_unified_summary" msgid="5347244550751740962">"Isto kao zaključavanje ekrana uređaja"</string>
@@ -1994,7 +1994,7 @@
<string name="show_ime_summary" msgid="3246628154011464373">"Zadrži je na ekranu dok je fizička tastatura aktivna"</string>
<string name="keyboard_shortcuts_helper" msgid="6574386807271399788">"Pomoć za tasterske prečice"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="8024313306403779742">"Prikaz dostupnih prečica"</string>
- <string name="language_and_input_for_work_category_title" msgid="2053255944038892588">"Tastature i alatke za profil za Work"</string>
+ <string name="language_and_input_for_work_category_title" msgid="2053255944038892588">"Tastature i alatke za poslovni profil"</string>
<string name="virtual_keyboards_for_work_title" msgid="3968291646938204523">"Virtuelna tastatura za posao"</string>
<string name="default_keyboard_layout" msgid="9171704064451242230">"Podrazumevano"</string>
<string name="pointer_speed" msgid="800691982011350432">"Brzina pokazivača"</string>
@@ -2634,7 +2634,7 @@
<string name="sync_is_failing" msgid="8284618104132302644">"Sinhronizacija trenutno ima problema. Uskoro će se vratiti."</string>
<string name="add_account_label" msgid="4461298847239641874">"Dodaj nalog"</string>
<string name="managed_profile_not_available_label" msgid="8784246681719821917">"Poslovni profil još uvek nije dostupan"</string>
- <string name="work_mode_label" msgid="6845849194740195757">"Profil za Work"</string>
+ <string name="work_mode_label" msgid="6845849194740195757">"Poslovni profil"</string>
<string name="work_mode_on_summary" msgid="1682781113156323592">"Ovim upravlja organizacija"</string>
<string name="work_mode_off_summary" msgid="1688885392211178315">"Aplikacije i obaveštenja su isključeni"</string>
<string name="remove_managed_profile_label" msgid="4625542553784793536">"Ukloni profil za posao"</string>
@@ -2877,7 +2877,7 @@
<item quantity="other"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> su instalirala autoritete za izdavanje sertifikata na uređaju, što može da im omogući da prate aktivnosti uređaja na mreži, uključujući imejlove, aplikacije i bezbedne veb-sajtove.\n\nKontaktirajte administratora da biste dobili više informacija o ovim sertifikatima.</item>
</plurals>
<plurals name="ssl_ca_cert_info_message" formatted="false" msgid="8271858091418779584">
- <item quantity="one"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> je instalirao autoritete za izdavanje sertifikata za profil za Work, što može da mu omogući da prati aktivnosti na poslovnoj mreži, uključujući imejlove, aplikacije i bezbedne veb-sajtove.\n\nKontaktirajte administratora da biste dobili više informacija o ovim sertifikatima.</item>
+ <item quantity="one"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> je instalirao autoritete za izdavanje sertifikata za poslovni profil, što može da mu omogući da prati aktivnosti na poslovnoj mreži, uključujući imejlove, aplikacije i bezbedne veb-sajtove.\n\nKontaktirajte administratora da biste dobili više informacija o ovim sertifikatima.</item>
<item quantity="few"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> su instalirala autoritete za izdavanje sertifikata na uređaju, što može da im omogući da prate aktivnosti uređaja na mreži, uključujući imejlove, aplikacije i bezbedne veb-sajtove.\n\nKontaktirajte administratora da biste dobili više informacija o ovim sertifikatima.</item>
<item quantity="other"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> su instalirala autoritete za izdavanje sertifikata na uređaju, što može da im omogući da prate aktivnosti uređaja na mreži, uključujući imejlove, aplikacije i bezbedne veb-sajtove.\n\nKontaktirajte administratora da biste dobili više informacija o ovim sertifikatima.</item>
</plurals>
@@ -3134,7 +3134,7 @@
<string name="keywords_color_temperature" msgid="2255253972992035046">"boja, temperatura, D65, D73, bela, žuta, plava, topla, hladna"</string>
<string name="keywords_lockscreen" msgid="4936846554280830394">"prevlačenje za otključavanje, lozinka, šablon, PIN"</string>
<string name="keywords_profile_challenge" msgid="8653718001253979611">"work izazov, work, profil"</string>
- <string name="keywords_unification" msgid="2020759909366983593">"profil za Work, profil kojim se upravlja, objedini, objedinjavanje, Work, profil"</string>
+ <string name="keywords_unification" msgid="2020759909366983593">"poslovni profil, profil kojim se upravlja, objedini, objedinjavanje, Work, profil"</string>
<string name="keywords_gesture" msgid="5031323247529869644">"pokreti"</string>
<string name="keywords_payment_settings" msgid="4745023716567666052">"platite, dodirnite, plaćanja"</string>
<string name="keywords_backup" msgid="7433356270034921627">"rezervna kopija, praviti rezervnu kopiju"</string>
@@ -3324,16 +3324,16 @@
<string name="zen_onboarding_new_setting_summary" msgid="8264430315983860075">"Nećete videti niti čuti obaveštenja. Pozivi od kontakata sa zvezdicom i ponovnih pozivalaca su dozvoljeni."</string>
<string name="zen_onboarding_current_setting_summary" msgid="3569246708507270821">"(trenutno podešavanje)"</string>
<string name="zen_onboarding_dnd_visual_disturbances_header" msgid="7584229011611927613">"Želite li da promenite podešavanja obaveštenja za režim Ne uznemiravaj?"</string>
- <string name="sound_work_settings" msgid="4140215240360927923">"Zvuci za profil za Work"</string>
+ <string name="sound_work_settings" msgid="4140215240360927923">"Zvuci za poslovni profil"</string>
<string name="work_use_personal_sounds_title" msgid="531727195073003599">"Koristi zvuke ličnog profila"</string>
- <string name="work_use_personal_sounds_summary" msgid="2886871383995187441">"Zvukovi profila za Work su isti kao i zvukovi za lične profile"</string>
- <string name="work_ringtone_title" msgid="5499360583947410224">"Melodija zvona za telefon za Work"</string>
+ <string name="work_use_personal_sounds_summary" msgid="2886871383995187441">"Zvukovi poslovnog profila su isti kao i zvukovi za lične profile"</string>
+ <string name="work_ringtone_title" msgid="5499360583947410224">"Melodija zvona poslovnog telefona"</string>
<string name="work_notification_ringtone_title" msgid="8059159087214025757">"Podrazumevani zvuk obaveštenja za posao"</string>
<string name="work_alarm_ringtone_title" msgid="5328487181385375130">"Podrazumevani zvuk alarma za posao"</string>
<string name="work_sound_same_as_personal" msgid="7728560881697159758">"Isto kao i za lični profil"</string>
<string name="work_sync_dialog_title" msgid="4799120971202956837">"Želite li da zamenite zvukove?"</string>
<string name="work_sync_dialog_yes" msgid="2110726233746476066">"Zameni"</string>
- <string name="work_sync_dialog_message" msgid="944233463059129156">"Zvuci sa ličnog profila će se koristiti za profil za Work"</string>
+ <string name="work_sync_dialog_message" msgid="944233463059129156">"Zvuci sa ličnog profila će se koristiti za poslovni profil"</string>
<string name="ringtones_install_custom_sound_title" msgid="210551218424553671">"Dodati prilagođeni zvuk?"</string>
<string name="ringtones_install_custom_sound_content" msgid="6683649115132255452">"Ova datoteka će biti kopirana u direktorijum <xliff:g id="FOLDER_NAME">%s</xliff:g>"</string>
<string name="ringtones_category_preference_title" msgid="4491932700769815470">"Melodije zvona"</string>
@@ -3342,7 +3342,7 @@
<string name="recent_notifications" msgid="8125865995065032049">"Nedavno poslato"</string>
<string name="recent_notifications_see_all_title" msgid="4089007770442871469">"Pogledajte sve iz poslednjih 7 dana"</string>
<string name="advanced_section_header" msgid="984680389373090015">"Napredna"</string>
- <string name="profile_section_header" msgid="5471479005472037417">"Obaveštenja za Work"</string>
+ <string name="profile_section_header" msgid="5471479005472037417">"Poslovna obaveštenja"</string>
<string name="asst_capability_prioritizer_title" msgid="3488284760645922160">"Automatsko davanje prioriteta za obaveštenja"</string>
<string name="asst_capability_prioritizer_summary" msgid="3525640645743790796">"Automatski isključuje zvuk i postavlja na dno manje važna obaveštenja"</string>
<string name="asst_capabilities_actions_replies_title" msgid="3929395108744251338">"Pametne radnje i odgovori"</string>
@@ -3364,14 +3364,14 @@
<string name="swipe_direction_rtl" msgid="4521416787262888813">"Prevucite ulevo da biste odbacili, udesno da bi se prikazao meni"</string>
<string name="notification_pulse_title" msgid="4861418327614907116">"Uključi treperenje lampice"</string>
<string name="lock_screen_notifications_title" msgid="6889072265118747835">"Na zaključanom ekranu"</string>
- <string name="locked_work_profile_notification_title" msgid="8307025804986190658">"Kada je profil za Work zaključan"</string>
+ <string name="locked_work_profile_notification_title" msgid="8307025804986190658">"Kada je poslovni profil zaključan"</string>
<string name="lock_screen_notifications_summary_show" msgid="5788874994455257378">"Prikaži sav sadržaj obaveštenja"</string>
<string name="lock_screen_notifications_summary_hide" msgid="3668806866535260143">"Sakrij osetljiv sadržaj"</string>
<string name="lock_screen_notifications_summary_disable" msgid="3259929507369817672">"Ne prikazuj nikakva obaveštenja"</string>
<string name="lock_screen_notifications_interstitial_message" msgid="4230189215124387818">"Kada je uređaj zaključan, kako želite da se obaveštenja prikazuju?"</string>
<string name="lock_screen_notifications_interstitial_title" msgid="2832587379332443505">"Obaveštenja"</string>
- <string name="lock_screen_notifications_summary_show_profile" msgid="8908775469657073273">"Prikazuj sav sadržaj obaveštenja o profilu za Work"</string>
- <string name="lock_screen_notifications_summary_hide_profile" msgid="7898086300511010591">"Sakrij osetljiv sadržaj profila za Work"</string>
+ <string name="lock_screen_notifications_summary_show_profile" msgid="8908775469657073273">"Prikazuj sav sadržaj obaveštenja o poslovnom profilu"</string>
+ <string name="lock_screen_notifications_summary_hide_profile" msgid="7898086300511010591">"Sakrij osetljiv sadržaj poslovnog profila"</string>
<string name="lock_screen_notifications_interstitial_message_profile" msgid="3324187664458600354">"Kada je uređaj zaključan, kako želite da se prikazuju obaveštenja o profilu?"</string>
<string name="lock_screen_notifications_interstitial_title_profile" msgid="4043621508889929254">"Obaveštenja o profilu"</string>
<string name="notifications_title" msgid="8334011924253810654">"Obaveštenja"</string>
@@ -3405,7 +3405,7 @@
<string name="notifications_sent_weekly" msgid="5859675428990259432">"~<xliff:g id="NUMBER">%1$s</xliff:g> nedeljno"</string>
<string name="notifications_sent_never" msgid="237997329598144638">"Nikad"</string>
<string name="manage_notification_access_title" msgid="5348743662189787547">"Pristup obaveštenjima"</string>
- <string name="work_profile_notification_access_blocked_summary" msgid="8148871282484870576">"Pristup obaveštenjima profila za Work je blokiran"</string>
+ <string name="work_profile_notification_access_blocked_summary" msgid="8148871282484870576">"Pristup obaveštenjima poslovnog profila je blokiran"</string>
<string name="manage_notification_access_summary_zero" msgid="236809421271593016">"Aplikacije ne mogu da čitaju obaveštenja"</string>
<plurals name="manage_notification_access_summary_nonzero" formatted="false" msgid="8496218948429646792">
<item quantity="one">%d aplikacija može da čita obaveštenja</item>
@@ -3612,7 +3612,7 @@
<string name="screen_pinning_unlock_pin" msgid="1441705536015645023">"Traži PIN pre otkačinjanja"</string>
<string name="screen_pinning_unlock_password" msgid="1017776884000170841">"Traži lozinku pre otkačinjanja"</string>
<string name="screen_pinning_unlock_none" msgid="9183040569733226911">"Zaključaj uređaj pre otkačinjanja"</string>
- <string name="opening_paragraph_delete_profile_unknown_company" msgid="2350380017136403670">"Ovim profilom za Work upravlja:"</string>
+ <string name="opening_paragraph_delete_profile_unknown_company" msgid="2350380017136403670">"Ovim poslovnim profilom upravlja:"</string>
<string name="managing_admin" msgid="3212584016377581608">"Upravlja <xliff:g id="ADMIN_APP_LABEL">%s</xliff:g>"</string>
<string name="experimental_preference" msgid="5903223408406906322">"(Eksperimentalno)"</string>
<string name="encryption_interstitial_header" msgid="3298397268731647519">"Bezbedno pokretanje"</string>
@@ -3770,8 +3770,8 @@
<string name="high_power_off" msgid="5906679734326490426">"Optimizacija korišćenja baterije"</string>
<string name="high_power_system" msgid="739584574711292753">"Optimizacija baterije nije dostupna"</string>
<string name="high_power_desc" msgid="333756885680362741">"Ne primenjujte optimizaciju baterije. Može brže da isprazni bateriju."</string>
- <string name="high_power_prompt_title" msgid="2805745781720454052">"Želite li da dozvolite da aplikacija uvek bude aktivna u pozadini?"</string>
- <string name="high_power_prompt_body" msgid="8067395096053552289">"Ako dozvolite da aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> uvek bude aktivna u pozadini, to može da smanji trajanje baterije. \n\nKasnije možete to da promenite u odeljku Podešavanja > Aplikacije i obaveštenja."</string>
+ <string name="high_power_prompt_title" msgid="2805745781720454052">"Dozvoljavate da aplikacija uvek bude aktivna u pozadini?"</string>
+ <string name="high_power_prompt_body" msgid="8067395096053552289">"Ako dozvolite da aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> uvek bude aktivna u pozadini, to može da skrati trajanje baterije. \n\nKasnije možete to da promenite u odeljku Podešavanja > Aplikacije i obaveštenja."</string>
<string name="battery_summary" msgid="4345690800899981339">"Potrošeno je <xliff:g id="PERCENTAGE">%1$s</xliff:g> od poslednjeg potpunog punjenja"</string>
<string name="battery_power_management" msgid="2853925857548647969">"Upravljanje napajanjem"</string>
<string name="no_battery_summary" msgid="4105932628367471314">"Baterija nije korišćena od poslednjeg potpunog punjenja"</string>
@@ -3857,7 +3857,7 @@
<string name="ignore_optimizations_off_desc" msgid="5598702251817814289">"Preporučeno za duže trajanje baterije"</string>
<string name="ignore_optimizations_title" msgid="7924345545276166305">"Želite li da dozvolite aplikaciji <xliff:g id="APP">%s</xliff:g> da ignoriše optimizacije baterije?"</string>
<string name="app_list_preference_none" msgid="7100409177446935028">"Ništa"</string>
- <string name="work_profile_usage_access_warning" msgid="403208064382097510">"Isključivanje pristupa korišćenju za ovu aplikaciju ne sprečava administratora da prati potrošnju podataka za aplikacije na profilu za Work"</string>
+ <string name="work_profile_usage_access_warning" msgid="403208064382097510">"Isključivanje pristupa korišćenju za ovu aplikaciju ne sprečava administratora da prati potrošnju podataka za aplikacije na poslovnom profilu"</string>
<string name="accessibility_lock_screen_progress" msgid="8242917828598820049">"Upotrebljeni znakovi: <xliff:g id="COUNT_0">%1$d</xliff:g> od <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="draw_overlay" msgid="2878665072530660668">"Prikaz preko drugih aplikacija"</string>
<string name="system_alert_window_settings" msgid="3024330223417646567">"Prikaz preko drugih aplikacija"</string>
@@ -3941,7 +3941,7 @@
<string name="disabled_by_policy_title_suspend_packages" msgid="4254714213391802322">"Ne možete da otvorite ovu aplikaciju"</string>
<string name="default_admin_support_msg" msgid="5789424433689798637">"Ako imate pitanja, obratite se IT administratoru"</string>
<string name="admin_support_more_info" msgid="8737842638087863477">"Još detalja"</string>
- <string name="admin_profile_owner_message" msgid="3199544166281052845">"Administrator može da nadgleda aplikacije i podatke povezane sa profilom za Work, uključujući podešavanja, dozvole, korporativni pristup, aktivnosti na mreži i informacije o lokaciji uređaja, kao i da upravlja njima."</string>
+ <string name="admin_profile_owner_message" msgid="3199544166281052845">"Administrator može da nadgleda aplikacije i podatke povezane sa poslovnim profilom, uključujući podešavanja, dozvole, korporativni pristup, aktivnosti na mreži i informacije o lokaciji uređaja, kao i da upravlja njima."</string>
<string name="admin_profile_owner_user_message" msgid="2991249382056855531">"Administrator može da nadgleda aplikacije i podatke povezane sa ovim korisnikom, uključujući podešavanja, dozvole, korporativni pristup, aktivnosti na mreži i informacije o lokaciji uređaja, kao i da upravlja njima."</string>
<string name="admin_device_owner_message" msgid="1823477572459610869">"Administrator može da prati aplikacije i podatke povezane sa ovim uređajem, uključujući podešavanja, dozvole, korporativni pristup, aktivnosti na mreži i informacije o lokaciji uređaja, kao i da upravlja njima."</string>
<string name="condition_turn_off" msgid="4395150881365143558">"Isključi"</string>
@@ -3960,7 +3960,7 @@
<string name="condition_cellular_summary" msgid="3607459310548343777">"Internet je dostupan samo preko Wi‑Fi mreže"</string>
<string name="condition_bg_data_title" msgid="184684435298857712">"Ušteda podataka"</string>
<string name="condition_bg_data_summary" msgid="5194942860807136682">"Funkcije su ograničene"</string>
- <string name="condition_work_title" msgid="9046811302347490371">"Profil za Work je isključen"</string>
+ <string name="condition_work_title" msgid="9046811302347490371">"Poslovni profil je isključen"</string>
<string name="condition_work_summary" msgid="5586134491975748565">"Za aplikacije i obaveštenja"</string>
<string name="condition_device_muted_action_turn_on_sound" msgid="5849285946804815263">"Uključi zvuk"</string>
<string name="condition_device_muted_title" msgid="3930542786434609976">"Zvuk zvona je isključen"</string>
@@ -4269,11 +4269,11 @@
<string name="enterprise_privacy_input_method_name" msgid="439610095825218563">"Podešeno je na <xliff:g id="APP_LABEL">%s</xliff:g>"</string>
<string name="enterprise_privacy_always_on_vpn_device" msgid="2022700916516458213">"Stalno uključen VPN je uključen"</string>
<string name="enterprise_privacy_always_on_vpn_personal" msgid="5644065780843002044">"Stalno uključen VPN je uključen na ličnom profilu"</string>
- <string name="enterprise_privacy_always_on_vpn_work" msgid="6443089897985373564">"Stalno uključen VPN je uključen na profilu za Work"</string>
+ <string name="enterprise_privacy_always_on_vpn_work" msgid="6443089897985373564">"Stalno uključen VPN je uključen na poslovnom profilu"</string>
<string name="enterprise_privacy_global_http_proxy" msgid="3862135895716080830">"Globalni HTTP proksi je podešen"</string>
<string name="enterprise_privacy_ca_certs_device" msgid="7715658848470643878">"Pouzdani akreditivi"</string>
<string name="enterprise_privacy_ca_certs_personal" msgid="1356447417193483802">"Pouzdani akreditivi na ličnom profilu"</string>
- <string name="enterprise_privacy_ca_certs_work" msgid="836419648894546893">"Pouzdani akreditivi na profilu za Work"</string>
+ <string name="enterprise_privacy_ca_certs_work" msgid="836419648894546893">"Pouzdani akreditivi na poslovnom profilu"</string>
<plurals name="enterprise_privacy_number_ca_certs" formatted="false" msgid="7953528945502561752">
<item quantity="one">Najmanje <xliff:g id="COUNT_1">%d</xliff:g> CA sertifikat</item>
<item quantity="few">Najmanje <xliff:g id="COUNT_1">%d</xliff:g> CA sertifikata</item>
@@ -4282,7 +4282,7 @@
<string name="enterprise_privacy_lock_device" msgid="1533125067038409945">"Administrator može da zaključava uređaj i resetuje lozinku"</string>
<string name="enterprise_privacy_wipe_device" msgid="7555287990273929922">"Administrator može da briše sve podatke sa uređaja"</string>
<string name="enterprise_privacy_failed_password_wipe_device" msgid="4101502079202483156">"Neuspeli pokušaji unosa lozinke pre brisanja svih podataka sa uređaja"</string>
- <string name="enterprise_privacy_failed_password_wipe_work" msgid="2881646286634693392">"Neuspeli pokušaji unosa lozinke pre brisanja podataka sa profila za Work"</string>
+ <string name="enterprise_privacy_failed_password_wipe_work" msgid="2881646286634693392">"Neuspeli pokušaji unosa lozinke pre brisanja podataka sa poslovnog profila"</string>
<plurals name="enterprise_privacy_number_failed_password_wipe" formatted="false" msgid="562550414712223382">
<item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> pokušaj</item>
<item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> pokušaja</item>
@@ -4556,7 +4556,7 @@
<string name="contextual_card_dismiss_confirm_message" msgid="2352465079667730312">"Želite li da uklonite ovaj predlog?"</string>
<string name="contextual_card_removed_message" msgid="4047307820743366876">"Predlog je uklonjen"</string>
<string name="contextual_card_undo_dismissal_text" msgid="5009245286931852012">"Opozovi"</string>
- <string name="low_storage_summary" msgid="4562224870189133400">"Preostalo je malo slobodnog memorijskog prostora. <xliff:g id="PERCENTAGE">%1$s</xliff:g> je iskorišćeno – <xliff:g id="FREE_SPACE">%2$s</xliff:g> je slobodno"</string>
+ <string name="low_storage_summary" msgid="4562224870189133400">"Nema mnogo prostora. <xliff:g id="PERCENTAGE">%1$s</xliff:g> je iskorišćeno – <xliff:g id="FREE_SPACE">%2$s</xliff:g> je slobodno"</string>
<string name="contextual_card_feedback_send" msgid="8698649023854350623">"Pošaljite povratne informacije"</string>
<string name="contextual_card_feedback_confirm_message" msgid="3987973028353264878">"Želite li da nam pošaljete povratne informacije za ovaj predlog?"</string>
<string name="copyable_slice_toast" msgid="1357518174923789947">"Kopirano je u privremenu memoriju: <xliff:g id="COPY_CONTENT">%1$s</xliff:g>"</string>
diff --git a/tests/CarDeveloperOptions/res/values-be/arrays.xml b/tests/CarDeveloperOptions/res/values-be/arrays.xml
index 7041f4c..d08aa63 100644
--- a/tests/CarDeveloperOptions/res/values-be/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-be/arrays.xml
@@ -477,7 +477,7 @@
<item msgid="1008268820118852416">"Безлімітная"</item>
</string-array>
<string-array name="wifi_privacy_entries">
- <item msgid="6545683814310036454">"Выкарыстоўваць выпадковы MAC-адрас (стандартна)"</item>
+ <item msgid="6545683814310036454">"Выпадковы MAC-адрас (стандартна)"</item>
<item msgid="214234417308375326">"Выкарыстоўваць прыладу MAC"</item>
</string-array>
<string-array name="wifi_hidden_entries">
diff --git a/tests/CarDeveloperOptions/res/values-be/strings.xml b/tests/CarDeveloperOptions/res/values-be/strings.xml
index e4588cc..99fe4f3 100644
--- a/tests/CarDeveloperOptions/res/values-be/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-be/strings.xml
@@ -358,7 +358,7 @@
<string name="owner_info_settings_title" msgid="2537966178998339896">"Тэкст на экране блакіроўкі"</string>
<string name="security_enable_widgets_title" msgid="1701510007926738088">"Уключыць віджэты"</string>
<string name="security_enable_widgets_disabled_summary" msgid="4408176087132339331">"Адключана адміністратарам"</string>
- <string name="lockdown_settings_title" msgid="4534779922580115990">"Паказаць параметр блакіроўкі"</string>
+ <string name="lockdown_settings_title" msgid="4534779922580115990">"Паказваць кнопку блакіроўкі"</string>
<string name="lockdown_settings_summary" msgid="7270756909878256174">"Дадаць у меню кнопкі сілкавання функцыю, якая выключае разумную блакіроўку, разблакіроўку адбіткам пальца і апавяшчэнні на экране блакіроўкі"</string>
<string name="trust_agents_extend_unlock_title" msgid="3582017561316089951">"Даверчыя агенты падаўжаюць разблакіроўку"</string>
<string name="trust_agents_extend_unlock_summary" msgid="3543997596586078084">"Калі функцыя ўключана, даверчыя агенты будуць даўжэй трымаць прыладу разблакіраванай, аднак не змогуць разблакіраваць ужо заблакіраваную прыладу."</string>
@@ -645,13 +645,13 @@
<string name="unlock_footer_none_complexity_requested" msgid="1669550050597044896">"<xliff:g id="APP_NAME">%1$s</xliff:g> рэкамендуе ўсталяваць новую блакіроўку экрана"</string>
<string name="lock_failed_attempts_before_wipe" msgid="7565412834122130877">"Паўтарыце спробу. Спроба <xliff:g id="CURRENT_ATTEMPTS">%1$d</xliff:g> з дапушчальных <xliff:g id="TOTAL_ATTEMPTS">%2$d</xliff:g>."</string>
<string name="lock_last_attempt_before_wipe_warning_title" msgid="7853820095898368793">"Вашы даныя будуць выдалены"</string>
- <string name="lock_last_pattern_attempt_before_wipe_device" msgid="1021644947949306054">"Калі вы ўведзяце няправільны графічны ключ яшчэ раз, даныя з гэтай прылады будуць выдалены"</string>
+ <string name="lock_last_pattern_attempt_before_wipe_device" msgid="1021644947949306054">"Калі вы ўведзяце няправільны ўзор разблакіроўкі яшчэ раз, даныя з гэтай прылады будуць выдалены"</string>
<string name="lock_last_pin_attempt_before_wipe_device" msgid="3823600293847594141">"Калі вы ўведзяце няправільны PIN-код яшчэ раз, даныя з гэтай прылады будуць выдалены"</string>
<string name="lock_last_password_attempt_before_wipe_device" msgid="3548966006264835462">"Калі вы ўведзяце няправільны пароль яшчэ раз, даныя з гэтай прылады будуць выдалены"</string>
- <string name="lock_last_pattern_attempt_before_wipe_user" msgid="5194192938934564218">"Калі вы яшчэ раз уведзяце няправільны графічны ключ, гэты карыстальнік будзе выдалены"</string>
+ <string name="lock_last_pattern_attempt_before_wipe_user" msgid="5194192938934564218">"Калі вы яшчэ раз уведзяце няправільны ўзор разблакіроўкі, гэты карыстальнік будзе выдалены"</string>
<string name="lock_last_pin_attempt_before_wipe_user" msgid="7833852187363499906">"Калі вы яшчэ раз уведзяце няправільны PIN-код, гэты карыстальнік будзе выдалены"</string>
<string name="lock_last_password_attempt_before_wipe_user" msgid="8979742220140001204">"Калі вы яшчэ раз уведзяце няправільны пароль, гэты карыстальнік будзе выдалены"</string>
- <string name="lock_last_pattern_attempt_before_wipe_profile" msgid="3877613047631174576">"Калі вы яшчэ раз уведзяце няправільны графічны ключ, ваш рабочы профіль і звязаныя з ім даныя будуць выдалены"</string>
+ <string name="lock_last_pattern_attempt_before_wipe_profile" msgid="3877613047631174576">"Калі вы яшчэ раз уведзяце няправільны ўзор разблакіроўкі, ваш рабочы профіль і звязаныя з ім даныя будуць выдалены"</string>
<string name="lock_last_pin_attempt_before_wipe_profile" msgid="8132438288175428168">"Калі вы яшчэ раз уведзяце няправільны PIN-код, ваш рабочы профіль і звязаныя з ім даныя будуць выдалены"</string>
<string name="lock_last_password_attempt_before_wipe_profile" msgid="1535128774464384305">"Калі вы яшчэ раз уведзяце няправільны пароль, ваш рабочы профіль і звязаныя з ім даныя будуць выдалены"</string>
<string name="lock_failed_attempts_now_wiping_device" msgid="8662360098784762828">"Занадта шмат няўдалых спроб. Даныя з гэтай прылады будуць выдалены."</string>
@@ -1871,7 +1871,7 @@
<string name="app_factory_reset" msgid="8718986000278776272">"Выдаліць абнаўленні"</string>
<string name="auto_launch_enable_text" msgid="3372898942144027341">"Вы выбралi запуск гэтага дадатку па змаўчаннi для некаторых дзеянняў."</string>
<string name="always_allow_bind_appwidgets_text" msgid="2286211654774611037">"Вы дазволілі гэтаму дадатку ствараць віджэты і атрымліваць доступ да іх даных."</string>
- <string name="auto_launch_disable_text" msgid="8560921288036801416">"Параметры па змаўчанні не ўсталяваныя"</string>
+ <string name="auto_launch_disable_text" msgid="8560921288036801416">"Стандартныя налады не зададзены"</string>
<string name="clear_activities" msgid="2068014972549235347">"Скінуць налады па змаўчанні"</string>
<string name="screen_compatibility_text" msgid="1768064020294301496">"Магчыма, гэта прыкладанне не разлічана для вашага экрана. Наладзьце яго."</string>
<string name="ask_compatibility" msgid="6687958195768084807">"Запытваць падчас запуску"</string>
@@ -2501,7 +2501,7 @@
<string name="battery_detail_since_full_charge" msgid="3814176986148084378">"Разбіўка з моманту апошняй поўнай зарадкі"</string>
<string name="battery_last_full_charge" msgid="5624033030647170717">"Апошняя поўная зарадка"</string>
<string name="battery_full_charge_last" msgid="4614554109170251301">"Прыблізны час працы пры поўным зарадзе акумулятара"</string>
- <string name="battery_footer_summary" msgid="4828444679643906943">"Даныя аб выкарыстанні батарэі з\'яўляюцца прыблізнымі і могуць змяняцца ў залежнасці ад выкарыстання"</string>
+ <string name="battery_footer_summary" msgid="4828444679643906943">"Даныя аб выкарыстанні акумулятара з\'яўляюцца прыблізнымі і могуць змяняцца ў залежнасці ад канкрэтных умоў"</string>
<string name="battery_detail_foreground" msgid="6616408559186553085">"У актыўным рэжыме"</string>
<string name="battery_detail_background" msgid="7938146832943604280">"У фонавым рэжыме"</string>
<string name="battery_detail_power_usage" msgid="3606930232257489212">"Выкарыстанне зараду"</string>
@@ -3692,7 +3692,7 @@
<string name="imei_information_title" msgid="7666097743700170757">"Інфармацыя IMEI"</string>
<string name="imei_information_summary" msgid="716516316022275083">"Інфармацыя, звязаная з IMEI (міжнародным ідэнтыфікатарам мабільнага абсталявання)"</string>
<string name="slot_number" msgid="785422579177068698">"(Слот<xliff:g id="SLOT_NUM">%1$d</xliff:g>)"</string>
- <string name="launch_by_default" msgid="6106985160202769725">"Адкрываць па змаўчанні"</string>
+ <string name="launch_by_default" msgid="6106985160202769725">"Стандартна адкрываць"</string>
<string name="app_launch_domain_links_title" msgid="2987289657348349133">"Адкрыццё спасылак"</string>
<string name="app_launch_open_domain_urls_title" msgid="8595126859922391331">"Адкрыць спасылкі, якія падтрымліваюцца"</string>
<string name="app_launch_open_domain_urls_summary" msgid="6803029846855502366">"Адкрываць без запыту"</string>
@@ -3993,7 +3993,7 @@
<string name="backup_disabled" msgid="6941165814784765643">"Рэзервовае капіраванне адключана"</string>
<string name="android_version_summary" msgid="2192751442789395445">"Абноўлена да версіі Android <xliff:g id="VERSION">%1$s</xliff:g>"</string>
<string name="android_version_pending_update_summary" msgid="3554543810520655076">"Ёсць абнаўленне"</string>
- <string name="disabled_by_policy_title" msgid="1238318274952958846">"Дзеянне не дапускаецца"</string>
+ <string name="disabled_by_policy_title" msgid="1238318274952958846">"Дзеянне забаронена"</string>
<string name="disabled_by_policy_title_adjust_volume" msgid="7094547090629203316">"Не ўдалося змяніць гучнасць"</string>
<string name="disabled_by_policy_title_outgoing_calls" msgid="3805836913095496278">"Выклікі забаронены"</string>
<string name="disabled_by_policy_title_sms" msgid="1453236584236681105">"Адпраўка SMS забаронена"</string>
diff --git a/tests/CarDeveloperOptions/res/values-bg/strings.xml b/tests/CarDeveloperOptions/res/values-bg/strings.xml
index cb724c0..6d0ce88 100644
--- a/tests/CarDeveloperOptions/res/values-bg/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-bg/strings.xml
@@ -935,13 +935,13 @@
<string name="wifi_privacy_settings" msgid="4462092795794247809">"Поверителност"</string>
<string name="wifi_privacy_settings_ephemeral_summary" msgid="2411375348287064283">"Рандомизиран MAC адрес"</string>
<string name="wifi_dpp_add_device_to_network" msgid="8871041525483253430">"Добавяне на устройство"</string>
- <string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"За да добавите устройството към „<xliff:g id="SSID">%1$s</xliff:g>“, центрирайте по-долу кода за бърза реакция"</string>
+ <string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"За да добавите устройството към <xliff:g id="SSID">%1$s</xliff:g>, центрирайте по-долу кода за бърза реакция"</string>
<string name="wifi_dpp_scan_qr_code" msgid="6021600592661235546">"Сканиране на кода за бърза реакция"</string>
- <string name="wifi_dpp_scan_qr_code_join_network" msgid="3085162928804379545">"За да се свържете с „<xliff:g id="SSID">%1$s</xliff:g>“, центрирайте по-долу кода за бърза реакция"</string>
+ <string name="wifi_dpp_scan_qr_code_join_network" msgid="3085162928804379545">"За да се свържете към <xliff:g id="SSID">%1$s</xliff:g>, центрирайте по-долу кода за бърза реакция"</string>
<string name="wifi_dpp_scan_qr_code_join_unknown_network" msgid="5682308317067290738">"Присъединете се към Wi‑Fi мрежата, като сканирате код за бърза реакция"</string>
<string name="wifi_dpp_share_wifi" msgid="1724161216219646284">"Споделяне на Wi‑Fi мрежата"</string>
- <string name="wifi_dpp_scan_qr_code_with_another_device" msgid="4357387474444884759">"Сканирайте този код за бърза реакция, за да се свържете към „<xliff:g id="SSID">%1$s</xliff:g>“ и да споделите паролата"</string>
- <string name="wifi_dpp_scan_open_network_qr_code_with_another_device" msgid="572011882416511818">"Сканирайте този код за бърза реакция, за да се свържете към „<xliff:g id="SSID">%1$s</xliff:g>“"</string>
+ <string name="wifi_dpp_scan_qr_code_with_another_device" msgid="4357387474444884759">"Сканирайте този код за бърза реакция, за да се свържете към <xliff:g id="SSID">%1$s</xliff:g> и да споделите паролата"</string>
+ <string name="wifi_dpp_scan_open_network_qr_code_with_another_device" msgid="572011882416511818">"Сканирайте този код за бърза реакция, за да се свържете към <xliff:g id="SSID">%1$s</xliff:g>"</string>
<string name="wifi_dpp_could_not_detect_valid_qr_code" msgid="27667719861826438">"Кодът за бърза реакция не можа да бъде прочетен. Центрирайте го отново и опитайте пак"</string>
<string name="wifi_dpp_failure_authentication_or_configuration" msgid="9142051662156233679">"Опитайте отново. Ако проблемът не се отстрани, свържете се с производителя на устройството."</string>
<string name="wifi_dpp_failure_not_compatible" msgid="4320027179973678283">"Нещо се обърка"</string>
@@ -951,11 +951,11 @@
<string name="wifi_dpp_check_connection_try_again" msgid="7144663015219170999">"Проверете връзката и опитайте отново"</string>
<string name="wifi_dpp_choose_network" msgid="6251424431594491691">"Избиране на мрежа"</string>
<string name="wifi_dpp_choose_network_to_connect_device" msgid="6385259857886784285">"За да свържете устройството си, изберете мрежа"</string>
- <string name="wifi_dpp_add_device_to_wifi" msgid="6454198064645462446">"Да се добави ли това устройство към „<xliff:g id="SSID">%1$s</xliff:g>“?"</string>
+ <string name="wifi_dpp_add_device_to_wifi" msgid="6454198064645462446">"Да се добави ли това устройство към <xliff:g id="SSID">%1$s</xliff:g>?"</string>
<string name="wifi_dpp_wifi_shared_with_device" msgid="5713765471758272471">"Wi-Fi мрежата бе споделена с устройството"</string>
<string name="wifi_dpp_add_another_device" msgid="3698441567235301565">"Добавяне на друго устройство"</string>
<string name="wifi_dpp_choose_different_network" msgid="128515107488187050">"Избиране на друга мрежа"</string>
- <string name="wifi_dpp_could_not_add_device" msgid="4966109556543584813">"Устройството не можа да се добави"</string>
+ <string name="wifi_dpp_could_not_add_device" msgid="4966109556543584813">"Устройството не бе добавено"</string>
<string name="wifi_dpp_device_found" msgid="6488461467496850841">"Открито е устройство"</string>
<string name="wifi_dpp_sharing_wifi_with_this_device" msgid="2540529164687476827">"Wi-Fi мрежата се споделя с това устройство…"</string>
<string name="wifi_dpp_connecting" msgid="4229290407210299897">"Свързва се…"</string>
diff --git a/tests/CarDeveloperOptions/res/values-bn/strings.xml b/tests/CarDeveloperOptions/res/values-bn/strings.xml
index 374e6ed..383284c 100644
--- a/tests/CarDeveloperOptions/res/values-bn/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-bn/strings.xml
@@ -4473,7 +4473,7 @@
<string name="privacy_dashboard_title" msgid="8764930992456607513">"গোপনীয়তা"</string>
<string name="privacy_dashboard_summary" msgid="7916431309860824945">"অনুমতি, অ্যাকাউন্ট অ্যাক্টিভিটি, ব্যক্তিগত ডেটা"</string>
<string name="contextual_card_dismiss_remove" msgid="1750420285615827309">"সরান"</string>
- <string name="contextual_card_dismiss_keep" msgid="3204450672928193661">"রাখুন"</string>
+ <string name="contextual_card_dismiss_keep" msgid="3204450672928193661">"Keep"</string>
<string name="contextual_card_dismiss_confirm_message" msgid="2352465079667730312">"সাজেশনটি সরাতে চান?"</string>
<string name="contextual_card_removed_message" msgid="4047307820743366876">"সাজেশন সরিয়ে দেওয়া হয়েছে"</string>
<string name="contextual_card_undo_dismissal_text" msgid="5009245286931852012">"আগের অবস্থায় ফিরে যান"</string>
diff --git a/tests/CarDeveloperOptions/res/values-cs/arrays.xml b/tests/CarDeveloperOptions/res/values-cs/arrays.xml
index 9496db3..88ea3e6 100644
--- a/tests/CarDeveloperOptions/res/values-cs/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-cs/arrays.xml
@@ -477,7 +477,7 @@
<item msgid="1008268820118852416">"Považovat za neměřenou síť"</item>
</string-array>
<string-array name="wifi_privacy_entries">
- <item msgid="6545683814310036454">"Použít náhodně vygenerovanou adresu MAC"</item>
+ <item msgid="6545683814310036454">"Použít náhodnou MAC (výchozí)"</item>
<item msgid="214234417308375326">"Použít adresu MAC zařízení"</item>
</string-array>
<string-array name="wifi_hidden_entries">
diff --git a/tests/CarDeveloperOptions/res/values-cs/strings.xml b/tests/CarDeveloperOptions/res/values-cs/strings.xml
index db9d90e..4493434 100644
--- a/tests/CarDeveloperOptions/res/values-cs/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-cs/strings.xml
@@ -2339,7 +2339,7 @@
<string name="battery_tip_early_heads_up_summary" msgid="4231489566422395156">"Baterie se možná vybije dříve než obvykle"</string>
<string name="battery_tip_early_heads_up_done_title" msgid="112550885882648429">"Spořič baterie je zapnutý"</string>
<string name="battery_tip_early_heads_up_done_summary" msgid="8692257022962771181">"Některé funkce mohou být omezeny"</string>
- <string name="battery_tip_high_usage_title" product="default" msgid="4103005178310487352">"Telefon byl využíván víc než obvykle"</string>
+ <string name="battery_tip_high_usage_title" product="default" msgid="4103005178310487352">"Telefon využíván víc než obvykle"</string>
<string name="battery_tip_high_usage_title" product="tablet" msgid="1019583260005768965">"Tablet byl využíván víc než obvykle"</string>
<string name="battery_tip_high_usage_title" product="device" msgid="8304138287288309490">"Zařízení bylo využíváno víc než obvykle"</string>
<string name="battery_tip_high_usage_summary" msgid="5514749872957528189">"Baterie se možná vybije dříve než obvykle"</string>
@@ -2743,7 +2743,7 @@
<string name="data_usage_cellular_data_summary" msgid="9162777397135709280">"Pozastaveno při limitu"</string>
<string name="account_settings_menu_auto_sync" msgid="2673669556006027506">"Autom. synchronizovat data"</string>
<string name="account_settings_menu_auto_sync_personal" msgid="3235831897309033754">"Autom. synch. osobní data"</string>
- <string name="account_settings_menu_auto_sync_work" msgid="5721442464286552815">"Autom. synch. pracovní data"</string>
+ <string name="account_settings_menu_auto_sync_work" msgid="5721442464286552815">"Autosynchronizace pracovních dat"</string>
<string name="data_usage_change_cycle" msgid="447761920472170031">"Změnit cyklus..."</string>
<string name="data_usage_pick_cycle_day" msgid="6319750879145917066">"Den v měsíci, kdy se má obnovit počítání datových přenosů:"</string>
<string name="data_usage_empty" msgid="7981405723435034032">"V tomto období nevyužily datové připojení žádné aplikace."</string>
@@ -3409,7 +3409,7 @@
<string name="notification_pulse_title" msgid="4861418327614907116">"Blikání kontrolky"</string>
<string name="lock_screen_notifications_title" msgid="6889072265118747835">"Na obrazovce uzamčení"</string>
<string name="locked_work_profile_notification_title" msgid="8307025804986190658">"Když je profil uzamčen"</string>
- <string name="lock_screen_notifications_summary_show" msgid="5788874994455257378">"Zobrazit veškerý obsah oznámení"</string>
+ <string name="lock_screen_notifications_summary_show" msgid="5788874994455257378">"Zobrazovat veškerý obsah oznámení"</string>
<string name="lock_screen_notifications_summary_hide" msgid="3668806866535260143">"Skrýt citlivý obsah"</string>
<string name="lock_screen_notifications_summary_disable" msgid="3259929507369817672">"Oznámení vůbec nezobrazovat"</string>
<string name="lock_screen_notifications_interstitial_message" msgid="4230189215124387818">"Jak chcete zobrazovat oznámení, když bude zařízení uzamčeno?"</string>
@@ -4635,7 +4635,7 @@
<string name="contextual_card_dismiss_confirm_message" msgid="2352465079667730312">"Odstranit tento návrh?"</string>
<string name="contextual_card_removed_message" msgid="4047307820743366876">"Návrh byl odebrán"</string>
<string name="contextual_card_undo_dismissal_text" msgid="5009245286931852012">"Zpět"</string>
- <string name="low_storage_summary" msgid="4562224870189133400">"V úložišti je málo místa. Využito <xliff:g id="PERCENTAGE">%1$s</xliff:g> – volné místo: <xliff:g id="FREE_SPACE">%2$s</xliff:g>"</string>
+ <string name="low_storage_summary" msgid="4562224870189133400">"Málo místa. Využito: <xliff:g id="PERCENTAGE">%1$s</xliff:g> – volné: <xliff:g id="FREE_SPACE">%2$s</xliff:g>"</string>
<string name="contextual_card_feedback_send" msgid="8698649023854350623">"Odeslat zpětnou vazbu"</string>
<string name="contextual_card_feedback_confirm_message" msgid="3987973028353264878">"Chtěli byste nám k tomuto návrhu poskytnout zpětnou vazbu?"</string>
<string name="copyable_slice_toast" msgid="1357518174923789947">"<xliff:g id="COPY_CONTENT">%1$s</xliff:g> – zkopírováno do schránky"</string>
diff --git a/tests/CarDeveloperOptions/res/values-el/arrays.xml b/tests/CarDeveloperOptions/res/values-el/arrays.xml
index ed9a068..707b98e 100644
--- a/tests/CarDeveloperOptions/res/values-el/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-el/arrays.xml
@@ -473,8 +473,8 @@
</string-array>
<string-array name="wifi_metered_entries">
<item msgid="4329206416008519163">"Αυτόματος εντοπισμός"</item>
- <item msgid="773943026484148895">"Χρήση ως δικτύου με περιορισμούς"</item>
- <item msgid="1008268820118852416">"Χρήση ως δικτύου χωρίς περιορισμούς"</item>
+ <item msgid="773943026484148895">"Χρήση ως δικτύου με ογκοχρέωση"</item>
+ <item msgid="1008268820118852416">"Χρήση ως δικτύου χωρίς ογκοχρέωση"</item>
</string-array>
<string-array name="wifi_privacy_entries">
<item msgid="6545683814310036454">"Χρήση τυχαίου MAC (προεπιλογή)"</item>
diff --git a/tests/CarDeveloperOptions/res/values-el/strings.xml b/tests/CarDeveloperOptions/res/values-el/strings.xml
index fd4f7e6..d77f924 100644
--- a/tests/CarDeveloperOptions/res/values-el/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-el/strings.xml
@@ -1337,7 +1337,7 @@
<string name="status_number_sim_slot" product="tablet" msgid="4518232285651165459">"MDN (υποδοχή sim %1$d)"</string>
<string name="status_number_sim_slot" product="default" msgid="3660851494421332328">"Αριθμ. τηλ. (υποδοχή sim %1$d)"</string>
<string name="status_number_sim_status" product="tablet" msgid="8069693515860290952">"MDN στη SIM"</string>
- <string name="status_number_sim_status" product="default" msgid="6602562692270457610">"Αριθμός τηλεφώνουν στη SIM"</string>
+ <string name="status_number_sim_status" product="default" msgid="6602562692270457610">"Αριθμός τηλεφώνου στη SIM"</string>
<string name="status_min_number" msgid="8346889546673707777">"ΛΕΠΤΟ"</string>
<string name="status_msid_number" msgid="7808175928664357661">"MSID"</string>
<string name="status_prl_version" msgid="5634561205739199042">"Έκδοση PRL"</string>
@@ -1612,7 +1612,7 @@
<string name="call_settings_summary" msgid="2119161087671450035">"Ορισμ.αυτόμ.τηλεφ., προώθ.κλήσης, αναμ.κλήσης, αναγν.κλήσ."</string>
<string name="tether_settings_title_usb" msgid="4265582654602420357">"Σύνδεση USB"</string>
<string name="tether_settings_title_wifi" msgid="2060965130234484613">"Φορητό σημείο πρόσβασης"</string>
- <string name="tether_settings_title_bluetooth" msgid="1999590158102569959">"Πρόσδεση Bluetooth"</string>
+ <string name="tether_settings_title_bluetooth" msgid="1999590158102569959">"Σύνδεση με Bluetooth"</string>
<string name="tether_settings_title_usb_bluetooth" msgid="1159128764162788159">"Πρόσδεση"</string>
<string name="tether_settings_title_all" msgid="6935843543433954181">"Σημ. πρόσβ. Wi-Fi/σύνδεση"</string>
<string name="tether_settings_summary_hotspot_on_tether_on" msgid="1289593649526514499">"Το σημείο πρόσβασης είναι ενεργό, σε σύνδεση"</string>
@@ -1621,9 +1621,9 @@
<string name="tether_settings_disabled_on_data_saver" msgid="3682544845899910726">"Δεν είναι δυνατή η σύνδεση σε φορητό σημείο πρόσβασης Wi-Fi, ενώ είναι ενεργοποιημένη η Εξοικονόμηση δεδομένων"</string>
<string name="usb_title" msgid="7480927657535578688">"USB"</string>
<string name="usb_tethering_button_text" msgid="6242228383142012332">"Σύνδεση USB"</string>
- <string name="usb_tethering_subtext" product="default" msgid="1573513260339548671">"Μοιραστείτε τη σύνδεση του τηλεφώνου στο διαδίκτυο μέσω USB"</string>
+ <string name="usb_tethering_subtext" product="default" msgid="1573513260339548671">"Κοινή χρήση της σύνδεσης του τηλεφώνου στο διαδίκτυο μέσω USB"</string>
<string name="usb_tethering_subtext" product="tablet" msgid="154536000235361034">"Μοιραστείτε τη σύνδεση του tablet στο διαδίκτυο μέσω USB"</string>
- <string name="bluetooth_tether_checkbox_text" msgid="7257293066139372774">"Πρόσδεση Bluetooth"</string>
+ <string name="bluetooth_tether_checkbox_text" msgid="7257293066139372774">"Σύνδεση με Bluetooth"</string>
<string name="bluetooth_tethering_subtext" product="tablet" msgid="6868756914621131635">"Κοινή χρήση της σύνδεσης του tablet στο διαδίκτυο μέσω Bluetooth"</string>
<string name="bluetooth_tethering_subtext" product="default" msgid="9167912297565425178">"Κοινή χρήση της σύνδεσης του τηλεφώνου στο διαδίκτυο μέσω Bluetooth"</string>
<string name="bluetooth_tethering_off_subtext_config" msgid="3981528184780083266">"Κοινή χρήση σύνδεσης της συσκευής <xliff:g id="DEVICE_NAME">%1$d</xliff:g> στο διαδίκτυο μέσω Bluetooth"</string>
@@ -2734,7 +2734,7 @@
<string name="data_usage_metered_wifi" msgid="2955256408132426720">"Δίκτυα Wi‑Fi με βάση τη χρήση"</string>
<string name="data_usage_metered_wifi_disabled" msgid="5771083253782103415">"Για επιλογή δικτύων με βάση τη χρήση, ενεργοποιήστε το Wi-Fi."</string>
<string name="data_usage_metered_auto" msgid="7924116401382629319">"Αυτόματα"</string>
- <string name="data_usage_metered_yes" msgid="7333744880035386073">"Με περιορισμούς"</string>
+ <string name="data_usage_metered_yes" msgid="7333744880035386073">"Με ογκοχρέωση"</string>
<string name="data_usage_metered_no" msgid="1961524615778610008">"Χωρίς περιορισμούς"</string>
<string name="data_usage_disclaimer" msgid="4683321532922590425">"Ο υπολογισμός δεδ.της εταιρείας κιν.τηλ. μπορεί να διαφέρει από τη συσκευή σας."</string>
<string name="cryptkeeper_emergency_call" msgid="4625420047524693116">"Κλήση έκτακτης ανάγκης"</string>
diff --git a/tests/CarDeveloperOptions/res/values-es-rUS/arrays.xml b/tests/CarDeveloperOptions/res/values-es-rUS/arrays.xml
index 1a1b470..490207d 100644
--- a/tests/CarDeveloperOptions/res/values-es-rUS/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-es-rUS/arrays.xml
@@ -477,7 +477,7 @@
<item msgid="1008268820118852416">"Tratar como red sin tarifa plana"</item>
</string-array>
<string-array name="wifi_privacy_entries">
- <item msgid="6545683814310036454">"Usar MAC aleatoria (predeterminada)"</item>
+ <item msgid="6545683814310036454">"Usar MAC aleatoria (pred.)"</item>
<item msgid="214234417308375326">"Usar MAC del dispositivo"</item>
</string-array>
<string-array name="wifi_hidden_entries">
diff --git a/tests/CarDeveloperOptions/res/values-es-rUS/strings.xml b/tests/CarDeveloperOptions/res/values-es-rUS/strings.xml
index 30da761..839b5f7 100644
--- a/tests/CarDeveloperOptions/res/values-es-rUS/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-es-rUS/strings.xml
@@ -908,8 +908,8 @@
<string name="wifi_hidden_network_warning" msgid="8182333050353796473">"Si el router no emite un ID de red, pero quieres conectarte a la red en el futuro, configúrala para que esté oculta.\n\nEs posible que esta acción implique riesgos de seguridad porque el teléfono emitirá la señal regularmente para buscar la red.\n\nSi configuras la red para que esté oculta, no se modificarán los ajustes del router."</string>
<string name="wifi_signal" msgid="696548364467704808">"Potencia de la señal"</string>
<string name="wifi_status" msgid="3439931558930689940">"Estado"</string>
- <string name="tx_wifi_speed" msgid="2571810085003261073">"Transmitir velocidad de vínculo"</string>
- <string name="rx_wifi_speed" msgid="7392873246110937187">"Recibir velocidad de vínculo"</string>
+ <string name="tx_wifi_speed" msgid="2571810085003261073">"Velocidad enlace de transmisión"</string>
+ <string name="rx_wifi_speed" msgid="7392873246110937187">"Velocidad enlace de recepción"</string>
<string name="wifi_frequency" msgid="6132852924995724246">"Frecuencia"</string>
<string name="wifi_ip_address" msgid="5572539114989914831">"Dirección IP"</string>
<string name="passpoint_label" msgid="7429247462404128615">"Se guardó mediante"</string>
diff --git a/tests/CarDeveloperOptions/res/values-es/arrays.xml b/tests/CarDeveloperOptions/res/values-es/arrays.xml
index 88d7b88..81d4f62 100644
--- a/tests/CarDeveloperOptions/res/values-es/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-es/arrays.xml
@@ -71,7 +71,7 @@
<item msgid="5597394826455877834">"Conectando…"</item>
<item msgid="5848277343965362748">"Autenticando..."</item>
<item msgid="3391238031431440676">"Obteniendo dirección IP…"</item>
- <item msgid="5257597310494000224">"Conectada"</item>
+ <item msgid="5257597310494000224">"Conectado"</item>
<item msgid="8472497592913050396">"Suspendido"</item>
<item msgid="1228072488815999109">"Desconectando…"</item>
<item msgid="7253087004422991731">"Desconectado"</item>
@@ -101,7 +101,7 @@
<item msgid="4526848028011846710">"PIN del dispositivo"</item>
</string-array>
<string-array name="wifi_p2p_status">
- <item msgid="8741947238021758201">"Conectada"</item>
+ <item msgid="8741947238021758201">"Conectado"</item>
<item msgid="983792611851499732">"Invitado"</item>
<item msgid="5438273405428201793">"Con error"</item>
<item msgid="4646663015449312554">"Disponible"</item>
@@ -414,7 +414,7 @@
<item msgid="5408915841694583740">"Desconectado"</item>
<item msgid="8754480102834556765">"Iniciando..."</item>
<item msgid="3351334355574270250">"Conectando…"</item>
- <item msgid="8303882153995748352">"Conectada"</item>
+ <item msgid="8303882153995748352">"Conectado"</item>
<item msgid="9135049670787351881">"Tiempo de espera"</item>
<item msgid="2124868417182583926">"Con error"</item>
</string-array>
diff --git a/tests/CarDeveloperOptions/res/values-es/strings.xml b/tests/CarDeveloperOptions/res/values-es/strings.xml
index 750de7a..633f7a6 100644
--- a/tests/CarDeveloperOptions/res/values-es/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-es/strings.xml
@@ -767,7 +767,7 @@
<string name="bluetooth_advanced_titlebar" msgid="6459469494039004784">"Ajustes avanzados de Bluetooth"</string>
<string name="bluetooth_empty_list_bluetooth_off" msgid="6255367297830430459">"Cuando el Bluetooth está activado, tu dispositivo se puede comunicar con otros dispositivos con Bluetooth cercanos"</string>
<string name="bluetooth_scanning_on_info_message" msgid="5460370815156050550">"Si el Bluetooth está activado, el dispositivo se puede comunicar con otros dispositivos Bluetooth cercanos.\n\nPara mejorar la experiencia de uso del dispositivo, las aplicaciones y los servicios pueden seguir buscando dispositivos cercanos en cualquier momento, aunque el Bluetooth esté desactivado. Esta opción se puede utilizar, por ejemplo, para mejorar los servicios y funciones basados en la ubicación, y puedes cambiarla en los "<annotation id="link">"ajustes de búsqueda"</annotation>"."</string>
- <string name="ble_scan_notify_text" msgid="6290170236546386932">"Para mejorar la precisión de la ubicación, los servicios y las aplicaciones del sistema pueden detectar dispositivos Bluetooth aunque esta conexión esté desactivada. Puedes cambiar esta opción en los <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>ajustes de búsqueda de Bluetooth<xliff:g id="LINK_END_1">LINK_END</xliff:g>."</string>
+ <string name="ble_scan_notify_text" msgid="6290170236546386932">"Para mejorar la precisión de la ubicación, los servicios y las aplicaciones del sistema pueden seguir detectando dispositivos Bluetooth. Puedes cambiar esta opción en los <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>ajustes de búsqueda de Bluetooth<xliff:g id="LINK_END_1">LINK_END</xliff:g>."</string>
<string name="bluetooth_connect_failed" msgid="1151234676456333786">"No se ha podido establecer conexión. Vuelve a intentarlo."</string>
<string name="device_details_title" msgid="726517818032923222">"Detalles del dispositivo"</string>
<string name="bluetooth_device_mac_address" msgid="5328203122581150405">"Dirección de Bluetooth del dispositivo: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
@@ -861,7 +861,7 @@
<string name="use_open_wifi_automatically_summary_scoring_disabled" msgid="1559329344492373028">"Para usar esta función, selecciona un proveedor de valoración de redes"</string>
<string name="use_open_wifi_automatically_summary_scorer_unsupported_disabled" msgid="1123080670578756834">"Para usar esta función, selecciona un proveedor de valoración de redes compatible"</string>
<string name="wifi_install_credentials" msgid="5650088113710858289">"Instalar certificados"</string>
- <string name="wifi_scan_notify_text" msgid="7614101215028336927">"Para mejorar la precisión de la ubicación, las aplicaciones y los servicios pueden seguir buscando redes Wi‑Fi en cualquier momento aunque esta conexión esté desactivada. Esta opción se puede utilizar, por ejemplo, para mejorar los servicios y funciones basados en la ubicación. Puedes cambiar este ajuste en la <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>búsqueda de redes Wi-Fi<xliff:g id="LINK_END_1">LINK_END</xliff:g>."</string>
+ <string name="wifi_scan_notify_text" msgid="7614101215028336927">"Para mejorar la precisión de la ubicación, las aplicaciones y los servicios pueden seguir buscando redes Wi‑Fi en cualquier momento incluso si el ajuste de Wi-Fi está desactivado. Esta opción se puede utilizar, por ejemplo, para mejorar los servicios y funciones basados en la ubicación. Puedes cambiar este ajuste en la <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>búsqueda de redes Wi-Fi<xliff:g id="LINK_END_1">LINK_END</xliff:g>."</string>
<string name="wifi_scan_notify_text_scanning_off" msgid="723796963816095410">"Para mejorar la precisión de la ubicación, activa la <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>búsqueda de redes Wi-Fi<xliff:g id="LINK_END_1">LINK_END</xliff:g>."</string>
<string name="wifi_scan_notify_remember_choice" msgid="1235445971400237444">"No volver a mostrar"</string>
<string name="wifi_setting_sleep_policy_title" msgid="2120785188625932076">"Usar Wi-Fi en suspensión"</string>
@@ -2051,7 +2051,7 @@
<string name="talkback_summary" msgid="6602857105831641574">"El lector de pantalla está destinado principalmente a personas ciegas y con problemas de visión"</string>
<string name="select_to_speak_summary" msgid="7514180457557735421">"Toca cualquier elemento de la pantalla para escucharlo"</string>
<string name="accessibility_captioning_title" msgid="5878371993023439642">"Subtítulos"</string>
- <string name="accessibility_screen_magnification_title" msgid="7250949681883917360">"Ampliar"</string>
+ <string name="accessibility_screen_magnification_title" msgid="7250949681883917360">"Ampliación"</string>
<string name="accessibility_screen_magnification_gestures_title" msgid="9199287875401817974">"Ampliar con tres toques"</string>
<string name="accessibility_screen_magnification_navbar_title" msgid="400655612610761242">"Ampliar con botón"</string>
<string name="accessibility_screen_magnification_state_navbar_gesture" msgid="1863831350878995600">"Amplía con un botón y tres toques"</string>
@@ -4106,7 +4106,7 @@
<string name="automatic_storage_manager_master_switch_title" msgid="1456978117739582562">"Utilizar el Administrador de Almacenamiento"</string>
<string name="deletion_helper_automatic_title" msgid="4370975149425263205">"Automático"</string>
<string name="deletion_helper_manual_title" msgid="1011785013431162078">"Manual"</string>
- <string name="deletion_helper_preference_title" msgid="797270307034242206">"Liberar espacio"</string>
+ <string name="deletion_helper_preference_title" msgid="797270307034242206">"Liberar espacio ahora"</string>
<string name="gesture_preference_title" msgid="583646591518373785">"Gestos"</string>
<string name="gesture_preference_summary" product="default" msgid="2990736567599191163">"Gestos rápidos para controlar el teléfono"</string>
<string name="gesture_preference_summary" product="tablet" msgid="8303793594714075580">"Gestos rápidos para controlar el tablet"</string>
@@ -4325,7 +4325,7 @@
<string name="battery_suggestion_summary" msgid="2669070349482656490"></string>
<string name="gesture_prevent_ringing_screen_title" msgid="4173494225145223638">"Evitar sonar"</string>
<string name="gesture_prevent_ringing_title" msgid="8827963588425673557">"Pulsa el botón de encendido y el botón para subir el volumen a la vez para"</string>
- <string name="gesture_prevent_ringing_sound_title" msgid="8642330448721033641">"Atajo para evitar que el dispositivo suene"</string>
+ <string name="gesture_prevent_ringing_sound_title" msgid="8642330448721033641">"Acceso directo para evitar que el dispositivo suene"</string>
<string name="prevent_ringing_option_vibrate" msgid="6456505293904544108">"Vibrar"</string>
<string name="prevent_ringing_option_mute" msgid="53662688921253613">"Silenciar"</string>
<string name="prevent_ringing_option_none" msgid="1450985763137666231">"No hacer nada"</string>
@@ -4339,7 +4339,7 @@
<string name="homepage_personal_settings" msgid="7472638597249114564">"Sugerencias"</string>
<string name="choose_network_title" msgid="3213314359630522396">"Elegir red"</string>
<string name="network_disconnected" msgid="8677203031237141594">"Desconectado"</string>
- <string name="network_connected" msgid="8197627827976712053">"Conectada"</string>
+ <string name="network_connected" msgid="8197627827976712053">"Conectado"</string>
<string name="network_connecting" msgid="8798611458457547110">"Conectando…"</string>
<string name="network_could_not_connect" msgid="552874922030763713">"No se ha podido conectar"</string>
<string name="empty_networks_list" msgid="5170020017144403884">"No se ha encontrado ninguna red."</string>
@@ -4474,10 +4474,10 @@
<string name="privacy_dashboard_summary" msgid="7916431309860824945">"Permisos, actividad de la cuenta, datos personales"</string>
<string name="contextual_card_dismiss_remove" msgid="1750420285615827309">"Eliminar"</string>
<string name="contextual_card_dismiss_keep" msgid="3204450672928193661">"Conservar"</string>
- <string name="contextual_card_dismiss_confirm_message" msgid="2352465079667730312">"¿Eliminar esta sugerencia?"</string>
+ <string name="contextual_card_dismiss_confirm_message" msgid="2352465079667730312">"¿Quitar esta sugerencia?"</string>
<string name="contextual_card_removed_message" msgid="4047307820743366876">"Sugerencia eliminada"</string>
<string name="contextual_card_undo_dismissal_text" msgid="5009245286931852012">"Deshacer"</string>
- <string name="low_storage_summary" msgid="4562224870189133400">"Queda poco espacio de almacenamiento. <xliff:g id="PERCENTAGE">%1$s</xliff:g> usado (disponible: <xliff:g id="FREE_SPACE">%2$s</xliff:g>)"</string>
+ <string name="low_storage_summary" msgid="4562224870189133400">"Queda poco espacio. <xliff:g id="PERCENTAGE">%1$s</xliff:g> usado - <xliff:g id="FREE_SPACE">%2$s</xliff:g> libre"</string>
<string name="contextual_card_feedback_send" msgid="8698649023854350623">"Enviar comentarios"</string>
<string name="contextual_card_feedback_confirm_message" msgid="3987973028353264878">"¿Te gustaría darnos tu opinión sobre esta sugerencia?"</string>
<string name="copyable_slice_toast" msgid="1357518174923789947">"<xliff:g id="COPY_CONTENT">%1$s</xliff:g> se ha copiado en el portapapeles."</string>
diff --git a/tests/CarDeveloperOptions/res/values-et/strings.xml b/tests/CarDeveloperOptions/res/values-et/strings.xml
index 870720a..864475d 100644
--- a/tests/CarDeveloperOptions/res/values-et/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-et/strings.xml
@@ -383,7 +383,7 @@
<string name="encryption_and_credential_settings_summary" product="tablet" msgid="8170667308598998791">"Seade on krüpteeritud"</string>
<string name="decryption_settings_summary" product="tablet" msgid="7524119945312453569">"Seade ei ole krüpteeritud"</string>
<string name="lockscreen_settings_title" msgid="1221505938891948413">"Lukustuskuva seaded"</string>
- <string name="lockscreen_settings_what_to_show_category" msgid="3133378945821488654">"Mida näidata?"</string>
+ <string name="lockscreen_settings_what_to_show_category" msgid="3133378945821488654">"Mida kuvada?"</string>
<string name="security_settings_summary" msgid="5210109100643223686">"Määrake Minu asukoht, ekraani avamine, SIM-kaardi lukk, mandaadi talletuslukk"</string>
<string name="cdma_security_settings_summary" msgid="1783066617800041869">"Määrake oma asukoht, ekraani avamine, mandaadi talletuslukk"</string>
<string name="security_passwords_title" msgid="6853942836045862315">"Privaatsus"</string>
@@ -782,7 +782,7 @@
<string name="bluetooth_disconnect_hid_profile" msgid="6964226087090465662">"Seadme <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ühendus sisendseadmega katkestatakse."</string>
<string name="bluetooth_disconnect_pan_user_profile" msgid="5523689915196343097">"Katkestatakse Interneti-ühendus seadme <xliff:g id="DEVICE_NAME">%1$s</xliff:g> kaudu."</string>
<string name="bluetooth_disconnect_pan_nap_profile" product="tablet" msgid="8145126793699232403">"Tahvelarvuti Interneti-ühenduse jagamine seadmega <xliff:g id="DEVICE_NAME">%1$s</xliff:g> katkestatakse."</string>
- <string name="bluetooth_disconnect_pan_nap_profile" product="default" msgid="6040826983120279685">"Telefoni Interneti-ühenduse jagamine seadmega <xliff:g id="DEVICE_NAME">%1$s</xliff:g> katkestatakse."</string>
+ <string name="bluetooth_disconnect_pan_nap_profile" product="default" msgid="6040826983120279685">"Telefoni internetiühenduse jagamine seadmega <xliff:g id="DEVICE_NAME">%1$s</xliff:g> katkestatakse."</string>
<string name="bluetooth_device_advanced_title" msgid="5752155558126694036">"Seotud Bluetooth-seade"</string>
<string name="bluetooth_device_advanced_online_mode_title" msgid="7665622268007450665">"Ühenda"</string>
<string name="bluetooth_device_advanced_online_mode_summary" msgid="4180673788239241086">"Ühenda Bluetooth-seadmega"</string>
@@ -933,11 +933,11 @@
<string name="wifi_ap_band_select_one" msgid="4409754936554360355">"Valige WiFi-kuumkoha lubamiseks vähemalt üks sagedusriba:"</string>
<string name="wifi_ip_settings" msgid="4636102290236116946">"IP-seaded"</string>
<string name="wifi_privacy_settings" msgid="4462092795794247809">"Privaatsus"</string>
- <string name="wifi_privacy_settings_ephemeral_summary" msgid="2411375348287064283">"Juhuslik MAC-aadress"</string>
+ <string name="wifi_privacy_settings_ephemeral_summary" msgid="2411375348287064283">"Juhulikustatud MAC-aadress"</string>
<string name="wifi_dpp_add_device_to_network" msgid="8871041525483253430">"Seadme lisamine"</string>
- <string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"Seadme võrku „<xliff:g id="SSID">%1$s</xliff:g>” lisamiseks paigutage allolev QR-kood aknas keskele"</string>
+ <string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"Seadme võrku „<xliff:g id="SSID">%1$s</xliff:g>” lisamiseks paigutage QR-kood allolevas aknas keskele"</string>
<string name="wifi_dpp_scan_qr_code" msgid="6021600592661235546">"QR-koodi skannimine"</string>
- <string name="wifi_dpp_scan_qr_code_join_network" msgid="3085162928804379545">"Võrguga „<xliff:g id="SSID">%1$s</xliff:g>” ühenduse loomiseks paigutage allolev QR-kood aknas keskele"</string>
+ <string name="wifi_dpp_scan_qr_code_join_network" msgid="3085162928804379545">"Võrguga „<xliff:g id="SSID">%1$s</xliff:g>” ühenduse loomiseks paigutage QR-kood allolevas aknas keskele"</string>
<string name="wifi_dpp_scan_qr_code_join_unknown_network" msgid="5682308317067290738">"Liituge WiFi-võrguga, skannides QR-koodi"</string>
<string name="wifi_dpp_share_wifi" msgid="1724161216219646284">"WiFi jagamine"</string>
<string name="wifi_dpp_scan_qr_code_with_another_device" msgid="4357387474444884759">"Skannige see QR-kood, et luua ühendus võrguga „<xliff:g id="SSID">%1$s</xliff:g>” ja jagada parooli"</string>
@@ -1621,11 +1621,11 @@
<string name="tether_settings_disabled_on_data_saver" msgid="3682544845899910726">"Kui andmemahu säästja on sisse lülitatud, siis ei saa jagada ega kasutada teisaldatavat kuumkohta"</string>
<string name="usb_title" msgid="7480927657535578688">"USB"</string>
<string name="usb_tethering_button_text" msgid="6242228383142012332">"USB jagamine"</string>
- <string name="usb_tethering_subtext" product="default" msgid="1573513260339548671">"Telefoni Interneti-ühenduse jagamine USB kaudu"</string>
+ <string name="usb_tethering_subtext" product="default" msgid="1573513260339548671">"Telefoni internetiühenduse jagamine USB kaudu"</string>
<string name="usb_tethering_subtext" product="tablet" msgid="154536000235361034">"Tahvelarvuti Interneti-ühenduse jagamine USB kaudu"</string>
<string name="bluetooth_tether_checkbox_text" msgid="7257293066139372774">"Jagamine Bluetoothiga"</string>
<string name="bluetooth_tethering_subtext" product="tablet" msgid="6868756914621131635">"Tahvelarvuti Interneti-ühenduse jagamine Bluetoothi kaudu"</string>
- <string name="bluetooth_tethering_subtext" product="default" msgid="9167912297565425178">"Telefoni Interneti-ühenduse jagamine Bluetoothi kaudu"</string>
+ <string name="bluetooth_tethering_subtext" product="default" msgid="9167912297565425178">"Telefoni internetiühenduse jagamine Bluetoothi kaudu"</string>
<string name="bluetooth_tethering_off_subtext_config" msgid="3981528184780083266">"Seadme <xliff:g id="DEVICE_NAME">%1$d</xliff:g> Interneti-ühenduse jagamine Bluetoothi kaudu"</string>
<string name="bluetooth_tethering_overflow_error" msgid="6946561351369376943">"Ei saa jagada rohkem kui <xliff:g id="MAXCONNECTION">%1$d</xliff:g> seadmele."</string>
<string name="bluetooth_untether_blank" msgid="5428300773782256084">"Seadme <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ühenduse jagamine lõpetatakse."</string>
@@ -1647,7 +1647,7 @@
<string name="mobile_insert_sim_card" msgid="7594550403454243732">"Sisestage SIM-kaart ja taaskäivitage"</string>
<string name="mobile_connect_to_internet" msgid="6031886097365170913">"Looge Interneti-ühendus"</string>
<string name="location_title" msgid="8664674161765477168">"Minu asukoht"</string>
- <string name="managed_profile_location_switch_title" msgid="8157384427925389680">"Tööprofiili asukoht"</string>
+ <string name="managed_profile_location_switch_title" msgid="8157384427925389680">"Tööprofiili asukohaluba"</string>
<string name="location_app_level_permissions" msgid="1298041503927632960">"Rakenduste load"</string>
<string name="location_app_permission_summary_location_off" msgid="541372845344796336">"Asukoht on välja lülitatud"</string>
<plurals name="location_app_permission_summary_location_on" formatted="false" msgid="7904821382328758218">
@@ -4131,7 +4131,7 @@
<string name="ambient_display_pickup_summary" product="default" msgid="8798915340594367449">"Kellaaja, märguannete ja muu teabe vaatamiseks võtke telefon kätte."</string>
<string name="ambient_display_pickup_summary" product="tablet" msgid="1077745287100012928">"Kellaaja, märguannete ja muu teabe vaatamiseks võtke tahvelarvuti kätte."</string>
<string name="ambient_display_pickup_summary" product="device" msgid="404199660076598026">"Kellaaja, märguannete ja muu teabe vaatamiseks võtke seade kätte."</string>
- <string name="ambient_display_tap_screen_title" product="default" msgid="2784322628239960695">"Puudutamine telefoni kontrollimiseks"</string>
+ <string name="ambient_display_tap_screen_title" product="default" msgid="2784322628239960695">"Telefoni kontrollimiseks puudutamine"</string>
<string name="ambient_display_tap_screen_title" product="tablet" msgid="6434521782016864148">"Puudutamine tahvelarvuti kontrollimiseks"</string>
<string name="ambient_display_tap_screen_title" product="device" msgid="4396793721852647356">"Puudutamine seadme kontrollimiseks"</string>
<string name="ambient_display_tap_screen_summary" msgid="7869039870571925213">"Kellaaja, märguannete ja muu teabe vaatamiseks puudutage oma ekraani."</string>
diff --git a/tests/CarDeveloperOptions/res/values-eu/strings.xml b/tests/CarDeveloperOptions/res/values-eu/strings.xml
index 6f82d05..3f8dae6 100644
--- a/tests/CarDeveloperOptions/res/values-eu/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-eu/strings.xml
@@ -203,11 +203,11 @@
<string name="proxy_error" msgid="5036164133669802299">"Abisua"</string>
<string name="proxy_error_dismiss" msgid="883805570485635650">"Ados"</string>
<string name="proxy_error_invalid_host" msgid="5430640241353307223">"Idatzi duzun ostalari-izena ez da baliozkoa."</string>
- <string name="proxy_error_invalid_exclusion_list" msgid="4314503082913856333">"Idatzi duzun salbuespen-zerrendak ez du formatu egokia. Idatzi domeinuen zerrenda, komaz bereizita."</string>
+ <string name="proxy_error_invalid_exclusion_list" msgid="4314503082913856333">"Idatzi duzun salbuespen-zerrendak ez du formatu egokia. Idatzi kanpo utzitako domeinuen zerrenda, komaz bereizita."</string>
<string name="proxy_error_empty_port" msgid="8034561724923076215">"Atakaren eremua bete behar duzu."</string>
<string name="proxy_error_empty_host_set_port" msgid="8471455809508588255">"Ataka eremuak hutsik egon behar du Ostalaria eremua ere hutsik badago."</string>
<string name="proxy_error_invalid_port" msgid="4046559920586100637">"Idatzi duzun ataka ez da baliozkoa."</string>
- <string name="proxy_warning_limited_support" msgid="9026539134219095768">"Arakatzaileak HTTP proxya erabiltzen du baina ezin dute beste aplikazioek erabili."</string>
+ <string name="proxy_warning_limited_support" msgid="9026539134219095768">"Arakatzaileak HTTP proxya erabiltzen du, baina ezin dute beste aplikazioek erabili."</string>
<string name="proxy_url_title" msgid="882042361706435904">"Proxya auto. konf. URLa: "</string>
<string name="radio_info_dl_kbps" msgid="2903778264453410272">"Deskargatzeko banda-zabalera (Kb/s):"</string>
<string name="radio_info_ul_kbps" msgid="3802245899811732716">"Kargen banda-zabalera (Kb/s):"</string>
@@ -2649,7 +2649,7 @@
<string name="misc_files_selected_count_bytes" msgid="3752262902203465861">"<xliff:g id="NUMBER">%1$s</xliff:g>/<xliff:g id="TOTAL">%2$s</xliff:g>"</string>
<string name="select_all" msgid="452240217913675728">"Hautatu guztiak"</string>
<string name="data_usage_summary_title" msgid="7288431048564861043">"Datuen erabilera"</string>
- <string name="data_usage_app_summary_title" msgid="8277327968906074983">"Datu-konexioa eta wifi-konexioa"</string>
+ <string name="data_usage_app_summary_title" msgid="8277327968906074983">"Datu- eta wifi-konexioa"</string>
<string name="data_usage_accounting" msgid="4681642832010140640">"Beharbada operadoreak zenbatzen duen datu kopurua eta gailuak zenbatzen duena ez datoz bat."</string>
<string name="data_usage_app" msgid="4995297799363021198">"Aplikazioen erabilera"</string>
<string name="data_usage_app_info_label" msgid="5358288895158910477">"APLIKAZIOARI BURUZKO INFORMAZIOA"</string>
@@ -3554,8 +3554,8 @@
<string name="restr_pin_enter_admin_pin" msgid="8577847751493521230">"Idatzi administratzailearen PIN kodea"</string>
<string name="switch_on_text" msgid="7100491749799298324">"Aktibatuta"</string>
<string name="switch_off_text" msgid="3539551289454353555">"Desaktibatuta"</string>
- <string name="screen_pinning_title" msgid="578020318289781102">"Pantaila ainguratzea"</string>
- <string name="screen_pinning_description" msgid="3814537379086412278">"Ezarpen hau aktibatzen baduzu, pantailak aingura ditzakezu, aukeratzen duzun ikuspegi hori egon dadin ikusgai harik eta aingura kentzen diozun arte.\n\nHorretarako:\n\n1. Aktibatu pantaila ainguratzeko eginbidea.\n\n2. Ireki Ikuspegi orokorra.\n\n3. Sakatu pantailaren goialdeko aplikazio-ikonoa, eta sakatu Ainguratu."</string>
+ <string name="screen_pinning_title" msgid="578020318289781102">"Pantaila ainguratzeko aukera"</string>
+ <string name="screen_pinning_description" msgid="3814537379086412278">"Ezarpen hau aktibatzen baduzu, pantailak aingura ditzakezu, aukeratzen duzun ikuspegi hori egon dadin ikusgai harik eta aingura kentzen diozun arte.\n\nHorretarako:\n\n1. Aktibatu pantaila ainguratzeko aukera.\n\n2. Ireki Ikuspegi orokorra.\n\n3. Sakatu pantailaren goialdeko aplikazio-ikonoa, eta sakatu Ainguratu."</string>
<string name="screen_pinning_unlock_pattern" msgid="1060334707088339444">"Eskatu desblokeatzeko eredua aingura kendu aurretik"</string>
<string name="screen_pinning_unlock_pin" msgid="1441705536015645023">"Eskatu PIN kodea aingura kendu aurretik"</string>
<string name="screen_pinning_unlock_password" msgid="1017776884000170841">"Eskatu pasahitza aingura kendu aurretik"</string>
@@ -3630,7 +3630,7 @@
<item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> baimen gehigarri</item>
</plurals>
<string name="runtime_permissions_summary_no_permissions_granted" msgid="3477934429220828771">"Ez du baimenik"</string>
- <string name="runtime_permissions_summary_no_permissions_requested" msgid="3901636077467389637">"Ez du baimenik eskatu"</string>
+ <string name="runtime_permissions_summary_no_permissions_requested" msgid="3901636077467389637">"Ez da baimenik eskatu"</string>
<string name="filter_all_apps" msgid="4042756539846043675">"Aplikazio guztiak"</string>
<string name="filter_enabled_apps" msgid="5888459261768538489">"Instalatutako aplikazioak"</string>
<string name="filter_instant_apps" msgid="8087483282854072366">"Zuzeneko aplikazioak"</string>
@@ -3715,7 +3715,7 @@
<string name="high_power_prompt_body" msgid="8067395096053552289">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioari atzeko planoan beti abiarazteko baimena emanez gero, baliteke bateriak gutxiago irautea. \n\nAukera hori aldatzeko, sakatu Ezarpenak > Aplikazioak eta jakinarazpenak."</string>
<string name="battery_summary" msgid="4345690800899981339">"Bateriaren <xliff:g id="PERCENTAGE">%1$s</xliff:g> erabili du bateria guztiz kargatu zenetik"</string>
<string name="battery_power_management" msgid="2853925857548647969">"Bateriaren kudeaketa"</string>
- <string name="no_battery_summary" msgid="4105932628367471314">"Ez du bateriarik erabili bateria guztiz kargatu zenetik"</string>
+ <string name="no_battery_summary" msgid="4105932628367471314">"Ez da bateriarik erabili bateria guztiz kargatu zenetik"</string>
<string name="app_notification_preferences" msgid="5154466638524523201">"Aplikazioaren ezarpenak"</string>
<string name="system_ui_settings" msgid="6751165163665775447">"Erakutsi sistemako erabiltzaile-interfazearen konfiguratzailea"</string>
<string name="additional_permissions" msgid="3142290772324571654">"Baimen gehigarriak"</string>
diff --git a/tests/CarDeveloperOptions/res/values-fa/strings.xml b/tests/CarDeveloperOptions/res/values-fa/strings.xml
index 4477271..863e8b1 100644
--- a/tests/CarDeveloperOptions/res/values-fa/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-fa/strings.xml
@@ -353,7 +353,7 @@
<string name="show_owner_info_on_lockscreen_label" msgid="4510756693837171575">"نمایش اطلاعات مالک در صفحه قفل"</string>
<string name="owner_info_settings_title" msgid="2537966178998339896">"پیام صفحه قفل"</string>
<string name="security_enable_widgets_title" msgid="1701510007926738088">"فعال کردن ابزارکها"</string>
- <string name="security_enable_widgets_disabled_summary" msgid="4408176087132339331">"غیرفعالشده توسط سرپرست"</string>
+ <string name="security_enable_widgets_disabled_summary" msgid="4408176087132339331">"توسط سرپرست غیرفعال شده"</string>
<string name="lockdown_settings_title" msgid="4534779922580115990">"نمایش گزینه «قفل همه»"</string>
<string name="lockdown_settings_summary" msgid="7270756909878256174">"نمایش گزینه دکمه روشن/خاموش که Smart Lock، باز کردن قفل با اثرانگشت و اعلانهای در صفحه قفل را خاموش میکند"</string>
<string name="trust_agents_extend_unlock_title" msgid="3582017561316089951">"نمایندههای معتمد فقط تمدید حالت باز"</string>
@@ -383,11 +383,11 @@
<string name="encryption_and_credential_settings_summary" product="tablet" msgid="8170667308598998791">"دستگاه رمزگذاری شد"</string>
<string name="decryption_settings_summary" product="tablet" msgid="7524119945312453569">"دستگاه رمزگذاری نشده است"</string>
<string name="lockscreen_settings_title" msgid="1221505938891948413">"نمایش صفحه قفل"</string>
- <string name="lockscreen_settings_what_to_show_category" msgid="3133378945821488654">"آنچه باید نمایش داده شود"</string>
+ <string name="lockscreen_settings_what_to_show_category" msgid="3133378945821488654">"چه چیزی نشان داده شود"</string>
<string name="security_settings_summary" msgid="5210109100643223686">"تنظیم مکان من، قفل صفحه، قفل سیم کارت، قفل حافظه اطلاعات کاربری"</string>
<string name="cdma_security_settings_summary" msgid="1783066617800041869">"تنظیم مکان من، بازگشایی قفل صفحه، قفل حافظه اطلاعات کاربری"</string>
<string name="security_passwords_title" msgid="6853942836045862315">"حریم خصوصی"</string>
- <string name="disabled_by_administrator_summary" msgid="6099821045360491127">"غیرفعالشده توسط سرپرست"</string>
+ <string name="disabled_by_administrator_summary" msgid="6099821045360491127">"توسط سرپرست غیرفعال شده"</string>
<string name="security_status_title" msgid="1261960357751754428">"وضعیت امنیتی"</string>
<string name="security_dashboard_summary_face" msgid="2536136110153593745">"قفل صفحه، بازگشایی با چهره"</string>
<string name="security_dashboard_summary" msgid="4048877125766167227">"قفل صفحه، اثرانگشت"</string>
@@ -585,7 +585,7 @@
<string name="face_unlock_set_unlock_password" msgid="8962344604388383659">"احراز هویت با چهره + گذرواژه"</string>
<string name="face_unlock_skip_face" msgid="7173197040501143880">"ادامه بدون احراز هویت با چهره"</string>
<string name="face_unlock_title" msgid="1298031162909236127">"میتوانید با استفاده از چهرهتان قفل تلفنتان را باز کنید. بنا به دلایل ایمنی این گزینه مستلزم قفل صفحه پشتیبان است."</string>
- <string name="unlock_set_unlock_disabled_summary" msgid="1713159782896140817">"غیرفعالشده توسط سرپرست، طبق خطمشی رمزگذاری یا حافظه اطلاعات کاربردی"</string>
+ <string name="unlock_set_unlock_disabled_summary" msgid="1713159782896140817">"توسط سرپرست غیرفعال شده، طبق خطمشی رمزگذاری یا حافظه اطلاعات کاربردی"</string>
<string name="unlock_set_unlock_mode_off" msgid="2950701212659081973">"هیچکدام"</string>
<string name="unlock_set_unlock_mode_none" msgid="3441605629077912292">"تند کشیدن"</string>
<string name="unlock_set_unlock_mode_pattern" msgid="8564909572968419459">"الگو"</string>
@@ -933,7 +933,7 @@
<string name="wifi_ap_band_select_one" msgid="4409754936554360355">"حداقل یک باند برای نقطه اتصال Wi‑Fi انتخاب کنید:"</string>
<string name="wifi_ip_settings" msgid="4636102290236116946">"تنظیمات IP"</string>
<string name="wifi_privacy_settings" msgid="4462092795794247809">"حریم خصوصی"</string>
- <string name="wifi_privacy_settings_ephemeral_summary" msgid="2411375348287064283">"MAC تصادفیسازیشده"</string>
+ <string name="wifi_privacy_settings_ephemeral_summary" msgid="2411375348287064283">"MAC تصادفی"</string>
<string name="wifi_dpp_add_device_to_network" msgid="8871041525483253430">"افزودن دستگاه"</string>
<string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"برای افزودن دستگاه به «<xliff:g id="SSID">%1$s</xliff:g>»، کد QR را در مرکز پنجره زیر قرار دهید"</string>
<string name="wifi_dpp_scan_qr_code" msgid="6021600592661235546">"اسکن کد QR"</string>
@@ -1201,7 +1201,7 @@
<string name="auto_brightness_very_high_title" msgid="6649896560889239565">"بسیار زیاد"</string>
<string name="auto_brightness_subtitle" msgid="8516999348793100665">"میزان روشنایی ترجیحی"</string>
<string name="auto_brightness_off_summary" msgid="6162650416289359104">"برای چراغهای در دسترس تنظیم نکنید"</string>
- <string name="auto_brightness_very_high_summary" msgid="7202032980509583918">"استفاده باتری افزایشیافته"</string>
+ <string name="auto_brightness_very_high_summary" msgid="7202032980509583918">"مصرف باتری بالا"</string>
<string name="auto_brightness_disclaimer" msgid="5416696351199148809">"میزان روشنایی را برای چراغ در دسترس بهینه کنید. تازمانیکه این ویژگی روشن است، میتوانید روشنایی را بهطورموقت تنظیم کنید."</string>
<string name="auto_brightness_description" msgid="8209140379089535411">"روشنایی صفحهنمایش بهطور خودکار با محیط و فعالیتهایتان تنظیم میشود. میتوانید لغزاننده را بهطور دستی حرکت دهید تا روشنایی تطبیقی ترجیح شما را دریابد."</string>
<string name="display_white_balance_title" msgid="5747260735311935143">"تعادل سفیدی نمایشگر"</string>
@@ -1260,11 +1260,11 @@
<string name="automatic_brightness" msgid="8663792987774126192">"روشنایی خودکار"</string>
<string name="lift_to_wake_title" msgid="5523752279947392868">"بیدار شدن با بالا بردن"</string>
<string name="ambient_display_screen_title" msgid="2632871676917956691">"نمایشگر محیط"</string>
- <string name="ambient_display_category_triggers" msgid="3496111745340047504">"زمان نمایش دادن"</string>
+ <string name="ambient_display_category_triggers" msgid="3496111745340047504">"کی نشان داده شود"</string>
<string name="doze_title" msgid="235269029233857546">"اعلانهای جدید"</string>
<string name="doze_summary" msgid="6762274282827831706">"روشن شدن صفحهنمایش هنگامی که اعلانی دریافت میکنید"</string>
<string name="doze_always_on_title" msgid="8555184965031789941">"همیشه روشن"</string>
- <string name="doze_always_on_summary" msgid="7654436900436328950">"نمایش زمان، نمادهای اعلان و سایر اطلاعات. استفاده باتری افزایشیافته."</string>
+ <string name="doze_always_on_summary" msgid="7654436900436328950">"نمایش زمان، نمادهای اعلان و سایر اطلاعات. مصرف باتری بالا."</string>
<string name="title_font_size" msgid="5021464556860010851">"اندازه قلم"</string>
<string name="short_summary_font_size" msgid="4141077908728522946">"نوشتار را بزرگتر یا کوچکتر کنید"</string>
<string name="sim_lock_settings" msgid="1986924650622642189">"تنظیمات قفل سیم کارت"</string>
@@ -1614,16 +1614,16 @@
<string name="tether_settings_title_wifi" msgid="2060965130234484613">"نقطه اتصال قابل حمل"</string>
<string name="tether_settings_title_bluetooth" msgid="1999590158102569959">"اشتراکگذاری اینترنت با بلوتوث"</string>
<string name="tether_settings_title_usb_bluetooth" msgid="1159128764162788159">"اشتراکگذاری اینترنت"</string>
- <string name="tether_settings_title_all" msgid="6935843543433954181">"نقطه اتصال و اتصال به اینترنت با تلفن همراه"</string>
+ <string name="tether_settings_title_all" msgid="6935843543433954181">"نقطه اتصال و اشتراکگذاری اینترنت"</string>
<string name="tether_settings_summary_hotspot_on_tether_on" msgid="1289593649526514499">"نقطه اتصال روشن، اشتراکگذاری اینترنت"</string>
<string name="tether_settings_summary_hotspot_on_tether_off" msgid="8010689354668285422">"نقطه اتصال روشن"</string>
<string name="tether_settings_summary_hotspot_off_tether_on" msgid="1349909238672649877">"اشتراکگذاری اینترنت"</string>
- <string name="tether_settings_disabled_on_data_saver" msgid="3682544845899910726">"هنگامی که محافظ صفحه روشن است نمیتوانید از نقاط اتصال قابل حمل یا اتصال به اینترنت با تلفن همراه استفاده کنید"</string>
+ <string name="tether_settings_disabled_on_data_saver" msgid="3682544845899910726">"هنگامی که محافظ صفحه روشن است نمیتوانید از نقاط اتصال قابل حمل یا اشتراکگذاری اینترنت استفاده کنید"</string>
<string name="usb_title" msgid="7480927657535578688">"USB"</string>
<string name="usb_tethering_button_text" msgid="6242228383142012332">"اشتراکگذاری اینترنت با USB"</string>
<string name="usb_tethering_subtext" product="default" msgid="1573513260339548671">"همرسانی اتصال اینترنت تلفن ازطریق USB"</string>
<string name="usb_tethering_subtext" product="tablet" msgid="154536000235361034">"همرسانی اینترنت رایانه لوحی ازطریق USB"</string>
- <string name="bluetooth_tether_checkbox_text" msgid="7257293066139372774">"تترینگ با بلوتوث"</string>
+ <string name="bluetooth_tether_checkbox_text" msgid="7257293066139372774">"اشتراکگذاری اینترنت با بلوتوث"</string>
<string name="bluetooth_tethering_subtext" product="tablet" msgid="6868756914621131635">"همرسانی اتصال اینترنت رایانه لوحی ازطریق بلوتوث"</string>
<string name="bluetooth_tethering_subtext" product="default" msgid="9167912297565425178">"همرسانی اتصال اینترنت تلفن ازطریق بلوتوث"</string>
<string name="bluetooth_tethering_off_subtext_config" msgid="3981528184780083266">"همرسانی اتصال اینترنت این <xliff:g id="DEVICE_NAME">%1$d</xliff:g> ازطریق بلوتوث"</string>
@@ -1800,7 +1800,7 @@
<string name="advanced_settings_summary" msgid="5912237062506771716">"گزینههای تنظیمات بیشتری فعال شود"</string>
<string name="application_info_label" msgid="3886253474964599105">"اطلاعات برنامه"</string>
<string name="storage_label" msgid="1109537840103290384">"حافظه"</string>
- <string name="auto_launch_label" msgid="47089737922907379">"باز کردن به صورت پیشفرض"</string>
+ <string name="auto_launch_label" msgid="47089737922907379">"باز کردن بهصورت پیشفرض"</string>
<string name="auto_launch_label_generic" msgid="7865828543459493308">"پیشفرضها"</string>
<string name="screen_compatibility_label" msgid="3638271673726075815">"سازگاری با صفحهنمایش"</string>
<string name="permissions_label" msgid="7341733648403464213">"مجوزها"</string>
@@ -1829,7 +1829,7 @@
<string name="app_factory_reset" msgid="8718986000278776272">"حذف نصب نسخههای به روز"</string>
<string name="auto_launch_enable_text" msgid="3372898942144027341">"شما انتخاب کردهاید که این برنامه را بهطور پیشفرض برای برخی از عملکردها راهاندازی کنید."</string>
<string name="always_allow_bind_appwidgets_text" msgid="2286211654774611037">"شما انتخاب کردید تا به این برنامه برای ایجاد ابزارک و دسترسی به اطلاعات آنها اجازه دهید."</string>
- <string name="auto_launch_disable_text" msgid="8560921288036801416">"پیش فرضی تنظیم نشده است."</string>
+ <string name="auto_launch_disable_text" msgid="8560921288036801416">"پیشفرضی تنظیم نشده است."</string>
<string name="clear_activities" msgid="2068014972549235347">"پاک کردن پیشفرضها"</string>
<string name="screen_compatibility_text" msgid="1768064020294301496">"ممکن است این برنامه برای صفحه شما طراحی نشده باشد، نحوه تنظیم آن برای صفحه را میتوانید از این قسمت کنترل کنید."</string>
<string name="ask_compatibility" msgid="6687958195768084807">"هنگام راهاندازی سؤال شود"</string>
@@ -2455,7 +2455,7 @@
<string name="battery_saver_auto_percentage_summary" msgid="2036128588460338677">"در <xliff:g id="PERCENT">%1$s</xliff:g> روشن خواهد شد"</string>
<string name="battery_saver_schedule_settings_title" msgid="574233428557678128">"تنظیم زمانبندی"</string>
<string name="battery_saver_sticky_title_new" msgid="5328707297110866082">"وقتی شارژ کامل شد، خاموش شود"</string>
- <string name="battery_saver_sticky_description_new" product="default" msgid="3406582427270935879">"وقتی شارژ تلفن <xliff:g id="PERCENT">%1$s</xliff:g> باشد، «بهینهسازی باتری» خاموش میشود"</string>
+ <string name="battery_saver_sticky_description_new" product="default" msgid="3406582427270935879">"وقتی شارژ تلفن <xliff:g id="PERCENT">%1$s</xliff:g> شود، «بهینهسازی باتری» خاموش میشود"</string>
<string name="battery_saver_sticky_description_new" product="tablet" msgid="3284967694001857194">"وقتی شارژ رایانه لوحی <xliff:g id="PERCENT">%1$s</xliff:g> باشد، «بهینهسازی باتری» خاموش میشود"</string>
<string name="battery_saver_sticky_description_new" product="device" msgid="5056520668081504111">"وقتی شارژ دستگاه <xliff:g id="PERCENT">%1$s</xliff:g> باشد، «بهینهسازی باتری» خاموش میشود"</string>
<!-- no translation found for battery_saver_seekbar_title (7607123201469333645) -->
@@ -3086,7 +3086,7 @@
<string name="keywords_keyboard_and_ime" msgid="3327265741354129990">"تصحیح نوشتار، تصحیح، صدا، لرزش، خودکار، زبان، اشاره، پیشنهاد دادن، پیشنهاد، طرح زمینه، توهینآمیز، کلمه، نوع، اموجی، بینالمللی"</string>
<string name="keywords_reset_apps" msgid="2645701455052020435">"بازنشانی، اولویتها، پیشفرض"</string>
<string name="keywords_all_apps" msgid="846444448435698930">"برنامهها، بارگیری، برنامههای کاربردی، سیستم"</string>
- <string name="keywords_app_permissions" msgid="8539841019997048500">"برنامهها، مجوزها، امنیت"</string>
+ <string name="keywords_app_permissions" msgid="8539841019997048500">"برنامهها، اجازهها، امنیت"</string>
<string name="keywords_default_apps" msgid="7435952699323965532">"برنامهها، پیشفرض"</string>
<string name="keywords_ignore_optimizations" msgid="9127632532176249438">"نادیده گرفتن بهینهسازی، چرت، حالت آماده بهکار برنامه"</string>
<string name="keywords_color_mode" msgid="8893345199519181751">"زنده، RGB، sRGB، رنگ، طبیعی، استاندارد"</string>
@@ -3123,7 +3123,7 @@
<string name="keywords_assist_input" msgid="8392362788794886564">"پیشفرض، دستیار"</string>
<string name="keywords_default_payment_app" msgid="845369409578423996">"پرداخت، پیشفرض"</string>
<string name="keywords_ambient_display" msgid="8835182491798487184">"اعلان ورودی"</string>
- <string name="keywords_hotspot_tethering" msgid="1723591462602613867">"اتصال به اینترنت با USB تلفن همراه، اتصال اینترنت به بلوتوث تلفن همراه، نقطه اتصال Wi-Fi"</string>
+ <string name="keywords_hotspot_tethering" msgid="1723591462602613867">"اشتراکگذاری اینترنت با USB، اتصال اینترنت به بلوتوث تلفن همراه، نقطه اتصال Wi-Fi"</string>
<string name="keywords_touch_vibration" msgid="2081175517528255224">"لمسی، لرزش، صفحه نمایش، حساسیت"</string>
<string name="keywords_ring_vibration" msgid="4210509151866460210">"لمس، لرزش، تلفن، تماس، حساسیت، به صدا در آوردن زنگ"</string>
<string name="keywords_notification_vibration" msgid="1077515502086745166">"لمس، لرزش، حساسیت"</string>
@@ -3588,7 +3588,7 @@
<string name="imei_information_title" msgid="7666097743700170757">"اطلاعات IMEI"</string>
<string name="imei_information_summary" msgid="716516316022275083">"اطلاعات مربوط به IMEI"</string>
<string name="slot_number" msgid="785422579177068698">"(شکاف<xliff:g id="SLOT_NUM">%1$d</xliff:g>)"</string>
- <string name="launch_by_default" msgid="6106985160202769725">"باز کردن به صورت پیشفرض"</string>
+ <string name="launch_by_default" msgid="6106985160202769725">"باز کردن بهصورت پیشفرض"</string>
<string name="app_launch_domain_links_title" msgid="2987289657348349133">"باز کردن پیوندها"</string>
<string name="app_launch_open_domain_urls_title" msgid="8595126859922391331">"باز کردن پیوندهای پشتیبانی شده"</string>
<string name="app_launch_open_domain_urls_summary" msgid="6803029846855502366">"باز کردن بدون پرسش"</string>
@@ -3871,7 +3871,7 @@
<string name="backup_disabled" msgid="6941165814784765643">"پشتیبانگیری غیرفعال است"</string>
<string name="android_version_summary" msgid="2192751442789395445">"بهروزرسانیشده به Android نسخه <xliff:g id="VERSION">%1$s</xliff:g>"</string>
<string name="android_version_pending_update_summary" msgid="3554543810520655076">"بهروزرسانی در دسترس است"</string>
- <string name="disabled_by_policy_title" msgid="1238318274952958846">"عملکرد مجاز نیست"</string>
+ <string name="disabled_by_policy_title" msgid="1238318274952958846">"کنش مجاز نیست"</string>
<string name="disabled_by_policy_title_adjust_volume" msgid="7094547090629203316">"نمیتوان بلندی صدا را تغییر داد"</string>
<string name="disabled_by_policy_title_outgoing_calls" msgid="3805836913095496278">"برقراری تماس تلفنی مجاز نیست"</string>
<string name="disabled_by_policy_title_sms" msgid="1453236584236681105">"استفاده از پیامک مجاز نیست"</string>
diff --git a/tests/CarDeveloperOptions/res/values-fi/strings.xml b/tests/CarDeveloperOptions/res/values-fi/strings.xml
index a772bfb..53d2b78 100644
--- a/tests/CarDeveloperOptions/res/values-fi/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-fi/strings.xml
@@ -935,9 +935,9 @@
<string name="wifi_privacy_settings" msgid="4462092795794247809">"Tietosuoja"</string>
<string name="wifi_privacy_settings_ephemeral_summary" msgid="2411375348287064283">"Satunnaistettu MAC-osoite"</string>
<string name="wifi_dpp_add_device_to_network" msgid="8871041525483253430">"Lisää laite"</string>
- <string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"Lisää laite verkkoon <xliff:g id="SSID">%1$s</xliff:g> keskittämällä alla olevaan QR-koodiin."</string>
+ <string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"Keskitä QR-koodi alle yhdistääksesi laitteen <xliff:g id="SSID">%1$s</xliff:g>:iin"</string>
<string name="wifi_dpp_scan_qr_code" msgid="6021600592661235546">"Lue QR-koodi"</string>
- <string name="wifi_dpp_scan_qr_code_join_network" msgid="3085162928804379545">"Yhdistä verkkoon <xliff:g id="SSID">%1$s</xliff:g> keskittämällä alla olevaan QR-koodiin"</string>
+ <string name="wifi_dpp_scan_qr_code_join_network" msgid="3085162928804379545">"Keskitä QR-koodi alle yhdistääksesi <xliff:g id="SSID">%1$s</xliff:g>:iin"</string>
<string name="wifi_dpp_scan_qr_code_join_unknown_network" msgid="5682308317067290738">"Yhdistä Wi-Fi-verkkoon lukemalla QR-koodi."</string>
<string name="wifi_dpp_share_wifi" msgid="1724161216219646284">"Jaa Wi‑Fi"</string>
<string name="wifi_dpp_scan_qr_code_with_another_device" msgid="4357387474444884759">"Yhdistä <xliff:g id="SSID">%1$s</xliff:g> ja jaa salasana lukemalla tämä QR-koodi."</string>
@@ -1069,7 +1069,7 @@
<string name="wifi_hotspot_ap_band_title" msgid="3485744480410441949">"AP-taajuus"</string>
<string name="wifi_hotspot_footer_info_regular" msgid="3876006922622827363">"Hotspot-ominaisuudella voit luoda muille laitteillesi Wi-Fi-verkon. Ominaisuus jakaa internetyhteyden muille laitteille mobiilidatayhteydellä. Lisämaksuja mobiilidatan käytöstä voidaan periä."</string>
<string name="wifi_hotspot_footer_info_local_only" msgid="3339582350894639261">"Sovellukset voivat luoda hotspotin ja jakaa sisältöä lähellä olevien laitteiden kanssa."</string>
- <string name="wifi_hotspot_auto_off_title" msgid="7416022590415189590">"Poista hotspot käytöstä automaattisesti"</string>
+ <string name="wifi_hotspot_auto_off_title" msgid="7416022590415189590">"Laita hotspot pois päältä automaattisesti"</string>
<string name="wifi_hotspot_auto_off_summary" msgid="3866769400624802105">"Wi‑Fi-hotspot poistetaan käytöstä, jos laitteita ei ole yhdistetty."</string>
<string name="wifi_tether_starting" msgid="7676952148471297900">"Otetaan yhteyspiste käyttöön..."</string>
<string name="wifi_tether_stopping" msgid="7478561853791953349">"Poistetaan yhteyspiste käytöstä..."</string>
@@ -1228,7 +1228,7 @@
<string name="night_display_summary_on_auto_mode_never" msgid="5461580863060506687">"Ei sammu automaattisesti"</string>
<string name="night_display_summary_on_auto_mode_custom" msgid="2200631112239399233">"Sammuu automaattisesti kello <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="night_display_summary_on_auto_mode_twilight" msgid="8386769601369289561">"Sammuu automaattisesti, kun aurinko nousee"</string>
- <string name="night_display_activation_on_manual" msgid="8379477527072027346">"Ota käyttöön nyt"</string>
+ <string name="night_display_activation_on_manual" msgid="8379477527072027346">"Laita päälle"</string>
<string name="night_display_activation_off_manual" msgid="7776082151269794201">"Laita pois päältä"</string>
<string name="night_display_activation_on_twilight" msgid="5610294051700287249">"Käytössä auringonnousuun asti"</string>
<string name="night_display_activation_off_twilight" msgid="6846727701281556110">"Pois käytöstä auringonlaskuun asti"</string>
@@ -2279,7 +2279,7 @@
<string name="battery_tip_smart_battery_summary" msgid="5344821856478265778">"Ota Virranhallinta käyttöön"</string>
<string name="battery_tip_early_heads_up_title" msgid="707163785378746813">"Ota Virransäästö käyttöön"</string>
<string name="battery_tip_early_heads_up_summary" msgid="4231489566422395156">"Akku voi loppua odotettua aiemmin"</string>
- <string name="battery_tip_early_heads_up_done_title" msgid="112550885882648429">"Virransäästö on käytössä"</string>
+ <string name="battery_tip_early_heads_up_done_title" msgid="112550885882648429">"Virransäästö on päällä"</string>
<string name="battery_tip_early_heads_up_done_summary" msgid="8692257022962771181">"Joitakin toimintoja voidaan rajoittaa"</string>
<string name="battery_tip_high_usage_title" product="default" msgid="4103005178310487352">"Puhelinta käytetty tavallista enemmän"</string>
<string name="battery_tip_high_usage_title" product="tablet" msgid="1019583260005768965">"Tablettia on käytetty tavallista enemmän"</string>
@@ -2452,12 +2452,12 @@
<string name="battery_saver_auto_routine" msgid="886514412067906980">"Perustuu ohjelmaasi"</string>
<string name="battery_saver_auto_percentage" msgid="5791982309331921556">"Perustuu varausprosenttiin"</string>
<string name="battery_saver_auto_routine_summary" msgid="9182044424547482889">"Virransäästö käynnistyy, jos akku näyttää todennäköisesti loppuvan ennen seuraavaa tavallista lataamista"</string>
- <string name="battery_saver_auto_percentage_summary" msgid="2036128588460338677">"Käynnistyy, kun taso on <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
+ <string name="battery_saver_auto_percentage_summary" msgid="2036128588460338677">"Menee päälle kun jäljellä on <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
<string name="battery_saver_schedule_settings_title" msgid="574233428557678128">"Luo aikataulu"</string>
<string name="battery_saver_sticky_title_new" msgid="5328707297110866082">"Poista käytöstä, kun ladattu täyteen"</string>
- <string name="battery_saver_sticky_description_new" product="default" msgid="3406582427270935879">"Virransäästö poistetaan käytöstä, kun puhelimen varaus on <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
- <string name="battery_saver_sticky_description_new" product="tablet" msgid="3284967694001857194">"Virransäästö poistetaan käytöstä, kun tabletin varaus on <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
- <string name="battery_saver_sticky_description_new" product="device" msgid="5056520668081504111">"Virransäästö poistetaan käytöstä, kun laitteen varaus on <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
+ <string name="battery_saver_sticky_description_new" product="default" msgid="3406582427270935879">"Virransäästö menee pois päältä, kun puhelimen varaus on <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
+ <string name="battery_saver_sticky_description_new" product="tablet" msgid="3284967694001857194">"Virransäästö menee pois päältä, kun tabletin varaus on <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
+ <string name="battery_saver_sticky_description_new" product="device" msgid="5056520668081504111">"Virransäästö menee pois päältä, kun laitteen varaus on <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
<!-- no translation found for battery_saver_seekbar_title (7607123201469333645) -->
<skip />
<string name="battery_saver_seekbar_title_placeholder" msgid="2321082163892561703">"Ota käyttöön"</string>
@@ -3230,7 +3230,7 @@
<string name="zen_mode_other_options" msgid="7216192179063769057">"muut vaihtoehdot"</string>
<string name="zen_mode_add" msgid="2533484377786927366">"Lisää"</string>
<string name="zen_mode_enable_dialog_turn_on" msgid="6396050543542026184">"Ota käyttöön"</string>
- <string name="zen_mode_button_turn_on" msgid="1097964136225943415">"Ota käyttöön nyt"</string>
+ <string name="zen_mode_button_turn_on" msgid="1097964136225943415">"Laita päälle"</string>
<string name="zen_mode_button_turn_off" msgid="3990967728457149454">"Laita pois päältä"</string>
<string name="zen_mode_settings_dnd_manual_end_time" msgid="4307574188962071429">"Älä häiritse ‑tila on käytössä <xliff:g id="FORMATTED_TIME">%s</xliff:g> asti."</string>
<string name="zen_mode_settings_dnd_manual_indefinite" msgid="3701005376825238752">"Älä häiritse ‑tila on käytössä, kunnes poistat sen käytöstä."</string>
@@ -4002,9 +4002,9 @@
<string name="suggestion_additional_fingerprints" msgid="3434467207282466411">"Lisää uusi sormenjälki"</string>
<string name="suggestion_additional_fingerprints_summary" msgid="1916547587832484196">"Avaa lukitus toisella sormella."</string>
<string name="battery_saver_on_summary" msgid="6841062406467435672">"Käytössä"</string>
- <string name="battery_saver_off_scheduled_summary" msgid="3740414764069188669">"Käynnistyy, kun taso on <xliff:g id="BATTERY_PERCENTAGE">%1$s</xliff:g>"</string>
+ <string name="battery_saver_off_scheduled_summary" msgid="3740414764069188669">"Menee päälle kun jäljellä on <xliff:g id="BATTERY_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="battery_saver_off_summary" msgid="8736555723004299721">"Pois käytöstä"</string>
- <string name="battery_saver_button_turn_on" msgid="3748696527267573793">"Ota käyttöön nyt"</string>
+ <string name="battery_saver_button_turn_on" msgid="3748696527267573793">"Laita päälle"</string>
<string name="battery_saver_button_turn_off" msgid="2912950982503267828">"Sammuta nyt"</string>
<string name="not_battery_optimizing" msgid="2616044774307734160">"Akun käytön optimointi ei käytössä"</string>
<string name="lockscreen_remote_input" msgid="3363310613165354434">"Estä vastausten ja muun tekstin kirjoittaminen ilmoituksiin, kun laite on lukittu."</string>
diff --git a/tests/CarDeveloperOptions/res/values-fr/strings.xml b/tests/CarDeveloperOptions/res/values-fr/strings.xml
index 03f48d8..2d4038f 100644
--- a/tests/CarDeveloperOptions/res/values-fr/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-fr/strings.xml
@@ -636,7 +636,7 @@
<string name="unlock_footer_low_complexity_requested" msgid="513212093196833566">"<xliff:g id="APP_NAME">%1$s</xliff:g> recommande d\'utiliser un nouveau schéma, code ou mot de passe et risque de ne pas fonctionner comme prévu si vous n\'en définissez pas"</string>
<string name="unlock_footer_none_complexity_requested" msgid="1669550050597044896">"<xliff:g id="APP_NAME">%1$s</xliff:g> recommande d\'utiliser un nouveau verrouillage d\'écran"</string>
<string name="lock_failed_attempts_before_wipe" msgid="7565412834122130877">"Réessayez. Tentative <xliff:g id="CURRENT_ATTEMPTS">%1$d</xliff:g> sur <xliff:g id="TOTAL_ATTEMPTS">%2$d</xliff:g>."</string>
- <string name="lock_last_attempt_before_wipe_warning_title" msgid="7853820095898368793">"Vos données seront supprimées"</string>
+ <string name="lock_last_attempt_before_wipe_warning_title" msgid="7853820095898368793">"Risque de perte des données"</string>
<string name="lock_last_pattern_attempt_before_wipe_device" msgid="1021644947949306054">"Si vous dessinez un schéma incorrect lors de la prochaine tentative, les données de cet appareil seront supprimées"</string>
<string name="lock_last_pin_attempt_before_wipe_device" msgid="3823600293847594141">"Si vous saisissez un code incorrect lors de la prochaine tentative, les données de cet appareil seront supprimées"</string>
<string name="lock_last_password_attempt_before_wipe_device" msgid="3548966006264835462">"Si vous saisissez un mot de passe incorrect lors de la prochaine tentative, les données de cet appareil seront supprimées"</string>
@@ -1185,7 +1185,7 @@
<string name="brightness" msgid="7309120144111305275">"Niveau de luminosité"</string>
<string name="brightness_title" msgid="5660190946911149690">"Luminosité"</string>
<string name="brightness_summary" msgid="8687101964451818730">"Régler la luminosité de l\'écran"</string>
- <string name="auto_brightness_title" msgid="908511534369820426">"Adaptation de la luminosité"</string>
+ <string name="auto_brightness_title" msgid="908511534369820426">"Luminosité adaptative"</string>
<string name="auto_brightness_summary_on" msgid="121488862610275737">"Activée"</string>
<string name="auto_brightness_summary_off" msgid="8569141123211510256">"Désactivé"</string>
<string name="auto_brightness_summary_very_low" msgid="7625647285740629347">"Niveau de luminosité préféré très faible"</string>
@@ -2452,7 +2452,7 @@
<string name="battery_saver_auto_routine" msgid="886514412067906980">"En fonction de vos habitudes"</string>
<string name="battery_saver_auto_percentage" msgid="5791982309331921556">"En fonction du pourcentage de batterie"</string>
<string name="battery_saver_auto_routine_summary" msgid="9182044424547482889">"L\'économiseur de batterie s\'activera si l\'autonomie restante risque d\'être insuffisante pour tenir jusqu\'au moment où vous mettez généralement votre téléphone en charge"</string>
- <string name="battery_saver_auto_percentage_summary" msgid="2036128588460338677">"S\'activera à <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
+ <string name="battery_saver_auto_percentage_summary" msgid="2036128588460338677">"S\'active à <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
<string name="battery_saver_schedule_settings_title" msgid="574233428557678128">"Paramétrer l\'économiseur de batterie"</string>
<string name="battery_saver_sticky_title_new" msgid="5328707297110866082">"Désactiver une fois la batterie complètement chargée"</string>
<string name="battery_saver_sticky_description_new" product="default" msgid="3406582427270935879">"L\'économiseur de batterie se désactive lorsque votre téléphone atteint un niveau de charge de <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
@@ -4002,7 +4002,7 @@
<string name="suggestion_additional_fingerprints" msgid="3434467207282466411">"Ajouter une empreinte digitale"</string>
<string name="suggestion_additional_fingerprints_summary" msgid="1916547587832484196">"Déverrouiller avec un autre doigt"</string>
<string name="battery_saver_on_summary" msgid="6841062406467435672">"Activé"</string>
- <string name="battery_saver_off_scheduled_summary" msgid="3740414764069188669">"Activer à <xliff:g id="BATTERY_PERCENTAGE">%1$s</xliff:g>"</string>
+ <string name="battery_saver_off_scheduled_summary" msgid="3740414764069188669">"S\'active à <xliff:g id="BATTERY_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="battery_saver_off_summary" msgid="8736555723004299721">"Désactivé"</string>
<string name="battery_saver_button_turn_on" msgid="3748696527267573793">"Activer maintenant"</string>
<string name="battery_saver_button_turn_off" msgid="2912950982503267828">"Désactiver maintenant"</string>
diff --git a/tests/CarDeveloperOptions/res/values-gu/strings.xml b/tests/CarDeveloperOptions/res/values-gu/strings.xml
index f0137c6..18cf173 100644
--- a/tests/CarDeveloperOptions/res/values-gu/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-gu/strings.xml
@@ -354,7 +354,7 @@
<string name="owner_info_settings_title" msgid="2537966178998339896">"લૉક સ્ક્રીન સંદેશ"</string>
<string name="security_enable_widgets_title" msgid="1701510007926738088">"વિજેટ્સને સક્ષમ કરો"</string>
<string name="security_enable_widgets_disabled_summary" msgid="4408176087132339331">"વ્યવસ્થાપકે અક્ષમ કરેલ"</string>
- <string name="lockdown_settings_title" msgid="4534779922580115990">"લોકડાઉનનો વિકલ્પ બતાવો"</string>
+ <string name="lockdown_settings_title" msgid="4534779922580115990">"લૉકડાઉનનો વિકલ્પ બતાવો"</string>
<string name="lockdown_settings_summary" msgid="7270756909878256174">"ડિસ્પ્લે પાવર બટનનો વિકલ્પ જે Smart Lock, ફિંગરપ્રિન્ટ અનલૉક કરવાનું, અને લૉક સ્ક્રીન પર નોટિફિકેશનને બંધ કરે છે"</string>
<string name="trust_agents_extend_unlock_title" msgid="3582017561316089951">"માત્ર ટ્રસ્ટ એજન્ટ અનલૉક મોડ લંબાવી શકશે"</string>
<string name="trust_agents_extend_unlock_summary" msgid="3543997596586078084">"જો ચાલુ કરવામાં આવે, તો ટ્રસ્ટ એજન્ટ વધુ લાંબા સમય માટે ડિવાઇસને અનલૉક રાખી શકશે, પરંતુ લૉક થયેલા ડિવાઇસને ફરી અનલૉક કરી શકશે નહીં."</string>
@@ -648,7 +648,7 @@
<string name="lock_last_password_attempt_before_wipe_profile" msgid="1535128774464384305">"જો તમે આગલા પ્રયત્નમાં ખોટો પાસવર્ડ દાખલ કરશો, તો તમારી કાર્યાલયની પ્રોફાઇલ અને તેનો ડેટા કાઢી નાખવામાં આવશે"</string>
<string name="lock_failed_attempts_now_wiping_device" msgid="8662360098784762828">"ઘણા બધા ખોટા પ્રયત્નો. આ ઉપકરણોનો ડેટા કાઢી નાખવામાં આવશે."</string>
<string name="lock_failed_attempts_now_wiping_user" msgid="3793513796171561873">"ઘણા બધા ખોટા પ્રયત્નો. આ વપરાશકર્તાને કાઢી નાખવામાં આવશે."</string>
- <string name="lock_failed_attempts_now_wiping_profile" msgid="5347108525299038285">"ઘણા બધા ખોટા પ્રયત્નો. આ કાર્યાલયની પ્રોફાઇલ અને તેનો ડેટા કાઢી નાખવામાં આવશે."</string>
+ <string name="lock_failed_attempts_now_wiping_profile" msgid="5347108525299038285">"ઘણા બધા ખોટા પ્રયત્નો. આ કાર્યાલયની પ્રોફાઇલ અને તેનો ડેટા ડિલીટ કરવામાં આવશે."</string>
<string name="lock_failed_attempts_now_wiping_dialog_dismiss" msgid="3950582268749037318">"છોડી દો"</string>
<plurals name="lockpassword_password_too_short" formatted="false" msgid="694091983183310827">
<item quantity="one">ઓછામાં ઓછા <xliff:g id="COUNT_1">%d</xliff:g> અક્ષરો હોવા જરૂરી છે</item>
@@ -889,7 +889,7 @@
<string name="wifi_menu_forget" msgid="7561140554450163075">"નેટવર્કને ભૂલી જાઓ"</string>
<string name="wifi_menu_modify" msgid="4080178040721021101">"નેટવર્ક સંશોધિત કરો"</string>
<string name="wifi_empty_list_wifi_off" msgid="272877164691346240">"ઉપલબ્ધ નેટવર્ક જોવા માટે, વાઇ-ફાઇ ચાલુ કરો."</string>
- <string name="wifi_empty_list_wifi_on" msgid="881478805041020600">"વાઇ-ફાઇ નેટવર્ક્સ માટે શોધી રહ્યું છે..."</string>
+ <string name="wifi_empty_list_wifi_on" msgid="881478805041020600">"વાઇ-ફાઇ નેટવર્ક માટે શોધી રહ્યું છે..."</string>
<string name="wifi_empty_list_user_restricted" msgid="2341613007817352431">"તમને વાઇ-ફાઇ નેટવર્ક બદલવાની પરવાનગી નથી."</string>
<string name="wifi_more" msgid="3538241640407382185">"વધુ"</string>
<string name="wifi_setup_wps" msgid="6730131677695521321">"ઑટોમૅટિક સેટઅપ (WPS)"</string>
@@ -1125,12 +1125,12 @@
<string name="musicfx_title" msgid="6456079041566773649">"સંગીત પ્રભાવો"</string>
<string name="ring_volume_title" msgid="5874791723449821646">"રિંગ વૉલ્યુમ"</string>
<string name="vibrate_in_silent_title" msgid="2314667015729841220">"શાંત હોય ત્યારે વાઇબ્રેટ કરો"</string>
- <string name="notification_sound_title" msgid="6812164482799723931">"નોટિફિકેશન માટે ડિફૉલ્ટ ધ્વનિ"</string>
+ <string name="notification_sound_title" msgid="6812164482799723931">"ડિફૉલ્ટ નોટિફિકેશન સાઉન્ડ"</string>
<string name="incoming_call_volume_title" msgid="4736570528754310450">"રિંગટોન"</string>
<string name="notification_volume_title" msgid="6022562909288085275">"નોટિફિકેશન"</string>
<string name="checkbox_notification_same_as_incoming_call" msgid="7312942422655861175">"સૂચનાઓ માટે ઇનકમિંગ કૉલ વોલ્યુમનો ઉપયોગ કરો"</string>
<string name="home_work_profile_not_supported" msgid="6137073723297076818">"કાર્ય પ્રોફાઇલ્સનું સમર્થન કરતું નથી"</string>
- <string name="notification_sound_dialog_title" msgid="6653341809710423276">"નોટિફિકેશન માટે ડિફૉલ્ટ ધ્વનિ"</string>
+ <string name="notification_sound_dialog_title" msgid="6653341809710423276">"ડિફૉલ્ટ નોટિફિકેશન સાઉન્ડ"</string>
<string name="media_volume_title" msgid="1030438549497800914">"મીડિયા"</string>
<string name="media_volume_summary" msgid="3142433516297061652">"સંગીત અને વીડિઓ માટે વોલ્યૂમ સેટ કરો"</string>
<string name="alarm_volume_title" msgid="8902277801531496243">"એલાર્મ"</string>
@@ -1647,7 +1647,7 @@
<string name="mobile_insert_sim_card" msgid="7594550403454243732">"કૃપા કરીને સિમ કાર્ડ શામેલ કરો અને પુનઃપ્રારંભ કરો"</string>
<string name="mobile_connect_to_internet" msgid="6031886097365170913">"કૃપા કરીને ઇન્ટરનેટ સાથે કનેક્ટ કરો"</string>
<string name="location_title" msgid="8664674161765477168">"મારું સ્થાન"</string>
- <string name="managed_profile_location_switch_title" msgid="8157384427925389680">"કાર્યાલયની પ્રોફાઇલ માટે સ્થાન"</string>
+ <string name="managed_profile_location_switch_title" msgid="8157384427925389680">"ઑફિસની પ્રોફાઇલ માટે સ્થાન"</string>
<string name="location_app_level_permissions" msgid="1298041503927632960">"ઍપ પરવાનગી"</string>
<string name="location_app_permission_summary_location_off" msgid="541372845344796336">"સ્થાન બંધ છે"</string>
<plurals name="location_app_permission_summary_location_on" formatted="false" msgid="7904821382328758218">
@@ -2086,7 +2086,7 @@
<string name="accessibility_content_timeout_preference_summary" msgid="853829064617918179">"તમારે વાંચવા જરૂરી હોય, પરંતુ હંગામી રૂપે દેખાતા સંદેશાને કેટલા સમય સુધી બતાવવા તે પસંદ કરો.\n\nઆ સેટિંગની સુવિધા બધી ઍપમાં નથી હોતી."</string>
<string name="accessibility_control_timeout_preference_summary" msgid="8582212299606932160">"તમને ક્રિયા કરવાનું કહેતાં હોય, પરંતુ હંગામી રૂપે દેખાતા સંદેશાને કેટલા સમય સુધી દેખાડવા તે પસંદ કરો.\n\nઆ સેટિંગની સુવિધા બધી ઍપમાં નથી હોતી."</string>
<string name="accessibility_long_press_timeout_preference_title" msgid="5029685114164868477">"ટચ કરી અને પકડવા પર વિલંબ"</string>
- <string name="accessibility_display_inversion_preference_title" msgid="3852635518618938998">"રંગ બદલવાની સુવિધા"</string>
+ <string name="accessibility_display_inversion_preference_title" msgid="3852635518618938998">"વિપરીત રંગમાં બદલવું"</string>
<string name="accessibility_display_inversion_preference_subtitle" msgid="69291255322175323">"કાર્યપ્રદર્શનને અસર થઈ શકે છે"</string>
<string name="accessibility_autoclick_preference_title" msgid="9164599088410340405">"જોવાયાનો સમયગાળો"</string>
<string name="accessibility_autoclick_description" msgid="5492414927846407499">"જો તમે માઉસનો ઉપયોગ કરી રહ્યાં હોય, તો જ્યારે કર્સર અમુક ચોક્કસ સમય માટે કાર્ય કરતું રોકાઈ જાય ત્યારે તમે તેને આપમેળે ક્રિયા કરવા માટે સેટ કરી શકો છો."</string>
@@ -2572,7 +2572,7 @@
<string name="select_device_admin_msg" msgid="4173769638399075387">"ઉપકરણ વ્યવસ્થાપક ઍપ્લિકેશનો"</string>
<string name="no_device_admins" msgid="4129231900385977460">"કોઈ ઉપકરણ વ્યવસ્થાપક ઍપ્લિકેશનો ઉપલબ્ધ નથી"</string>
<string name="personal_device_admin_title" msgid="759440849188565661">"વ્યક્તિગત"</string>
- <string name="managed_device_admin_title" msgid="8021522755492551726">"કાર્યાલય"</string>
+ <string name="managed_device_admin_title" msgid="8021522755492551726">"ઑફિસ"</string>
<string name="sms_access_restriction_enabled" msgid="3006320256764718303">"SMS અને કૉલ લૉગનો અૅક્સેસ પ્રતિબંધિત કરો"</string>
<string name="sms_access_restriction_enabled_summary" msgid="9011946580977780063">"માત્ર ડિફૉલ્ટ ફોન અને સંદેશ માટેની અૅપ પાસે SMS અને કૉલ લૉગની પરવાનગીઓ હોય છે"</string>
<string name="no_trust_agents" msgid="5757792915019113084">"કોઈ ઉપલબ્ધ ટ્રસ્ટ એજન્ટ્સ નથી"</string>
@@ -2601,7 +2601,7 @@
<string name="work_mode_label" msgid="6845849194740195757">"કાર્યાલયની પ્રોફાઇલ"</string>
<string name="work_mode_on_summary" msgid="1682781113156323592">"તમારી સંસ્થા દ્વારા મેનેજ કરેલ"</string>
<string name="work_mode_off_summary" msgid="1688885392211178315">"ઍપ અને નોટિફિકેશન બંધ છે"</string>
- <string name="remove_managed_profile_label" msgid="4625542553784793536">"કાર્યાલયની પ્રોફાઇલ દૂર કરો"</string>
+ <string name="remove_managed_profile_label" msgid="4625542553784793536">"ઑફિસની પ્રોફાઇલ દૂર કરો"</string>
<string name="background_data" msgid="8275750862371471171">"બૅકગ્રાઉન્ડ ડેટા"</string>
<string name="background_data_summary" msgid="799640633948841990">"ઍપ્લિકેશનો કોઈપણ સમયે ડેટાને સમન્વયિત, મોકલી અને પ્રાપ્ત કરી શકે છે"</string>
<string name="background_data_dialog_title" msgid="8306650658158895976">"બૅકગ્રાઉન્ડ ડેટાને અક્ષમ કરીએ?"</string>
@@ -2671,7 +2671,7 @@
<string name="data_usage_cellular_data_summary" msgid="9162777397135709280">"થોભાવવાની મર્યાદા"</string>
<string name="account_settings_menu_auto_sync" msgid="2673669556006027506">"ડેટાને આપમેળે સિંક કરો"</string>
<string name="account_settings_menu_auto_sync_personal" msgid="3235831897309033754">"વ્યક્તિગત ડેટાને ઑટો સિંક કરો"</string>
- <string name="account_settings_menu_auto_sync_work" msgid="5721442464286552815">"કાર્યાલયના ડેટાને આપમેળે સિંક કરો"</string>
+ <string name="account_settings_menu_auto_sync_work" msgid="5721442464286552815">"ઑફિસના ડેટાને ઑટો સિંક કરો"</string>
<string name="data_usage_change_cycle" msgid="447761920472170031">"ચક્ર બદલો…"</string>
<string name="data_usage_pick_cycle_day" msgid="6319750879145917066">"ડેટા વપરાશ ચક્ર ફરીથી સેટ કરવા માટે મહિનાનો દિવસ:"</string>
<string name="data_usage_empty" msgid="7981405723435034032">"આ સમયગાળા દરમ્યાન કોઈ એપ્લિકેશને ડેટાનો ઉપયોગ કર્યો નથી."</string>
@@ -2888,7 +2888,7 @@
<string name="user_confirm_remove_self_title" msgid="6739480453680217543">"તમને પોતાને કાઢી નાખીએ?"</string>
<string name="user_confirm_remove_title" msgid="1034498514019462084">"આ વપરાશકર્તા ડિલીટ કરીએ?"</string>
<string name="user_profile_confirm_remove_title" msgid="6138684743385947063">"આ પ્રોફાઇલ દૂર કરીએ?"</string>
- <string name="work_profile_confirm_remove_title" msgid="3168910958076735800">"કાર્યાલયની પ્રોફાઇલ દૂર કરીએ?"</string>
+ <string name="work_profile_confirm_remove_title" msgid="3168910958076735800">"ઑફિસની પ્રોફાઇલ દૂર કરીએ?"</string>
<string name="user_confirm_remove_self_message" product="tablet" msgid="2889456786320157545">"તમ તમારું સ્થાન અને ડેટા આ ટેબ્લેટ પરથી ગુમાવશો. તમે આ ક્રિયાને પૂર્વવત્ કરી શકતા નથી."</string>
<string name="user_confirm_remove_self_message" product="default" msgid="8441729423565705183">"તમે આ ફોન પરથી તમારું સ્થાન અને ડેટા ગુમાવશો. તમે આ ક્રિયાને પૂર્વવત્ કરી શકતા નથી."</string>
<string name="user_confirm_remove_message" msgid="5202150470271756013">"તમામ ઍપ્લિકેશનો અને ડેટા કાઢી નાખવામાં આવશે."</string>
@@ -3141,9 +3141,9 @@
<string name="ring_volume_option_title" msgid="2038924918468372264">"રિંગ વૉલ્યૂમ"</string>
<string name="notification_volume_option_title" msgid="1358512611511348260">"નોટિફિકેશન વૉલ્યૂમ"</string>
<string name="ringtone_title" msgid="1409086028485922583">"ફોન રિંગટોન"</string>
- <string name="notification_ringtone_title" msgid="2932960620843976285">"નોટિફિકેશન માટે ડિફૉલ્ટ ધ્વનિ"</string>
+ <string name="notification_ringtone_title" msgid="2932960620843976285">"ડિફૉલ્ટ નોટિફિકેશન સાઉન્ડ"</string>
<string name="notification_unknown_sound_title" msgid="8043718667804838398">"ઍપ્લિકેશને અવાજ પૂરો પાડ્યો"</string>
- <string name="notification_sound_default" msgid="2664544380802426260">"નોટિફિકેશન માટે ડિફૉલ્ટ ધ્વનિ"</string>
+ <string name="notification_sound_default" msgid="2664544380802426260">"ડિફૉલ્ટ નોટિફિકેશન સાઉન્ડ"</string>
<string name="alarm_ringtone_title" msgid="6411326147408635902">"ડિફૉલ્ટ એલાર્મ સાઉન્ડ"</string>
<string name="vibrate_when_ringing_title" msgid="2757996559847126952">"કૉલ માટે વાઇબ્રેટ કરો"</string>
<string name="other_sound_settings" msgid="5250376066099818676">"અન્ય ધ્વનિઓ"</string>
@@ -3635,7 +3635,7 @@
<string name="filter_enabled_apps" msgid="5888459261768538489">"ઇન્સ્ટૉલ કરેલી ઍપ્લિકેશનો"</string>
<string name="filter_instant_apps" msgid="8087483282854072366">"ઝટપટ ઍપ્લિકેશનો"</string>
<string name="filter_personal_apps" msgid="3473268022652904457">"વ્યક્તિગત"</string>
- <string name="filter_work_apps" msgid="4202483998339465542">"કાર્યાલય"</string>
+ <string name="filter_work_apps" msgid="4202483998339465542">"ઑફિસ"</string>
<string name="filter_notif_all_apps" msgid="1862666327228804896">"ઍપ્લિકેશનો: તમામ"</string>
<string name="filter_notif_blocked_apps" msgid="5694956954776028202">"બંધ કરેલી છે"</string>
<string name="filter_notif_urgent_channels" msgid="5000735867167027148">"કૅટેગરી: તાત્કાલિક મહત્વની"</string>
@@ -3711,8 +3711,8 @@
<string name="high_power_off" msgid="5906679734326490426">"બૅટરી વપરાશને ઓપ્ટિમાઇઝ કરી રહ્યું છે"</string>
<string name="high_power_system" msgid="739584574711292753">"બૅટરી ઓપ્ટિમાઇઝેશન ઉપલબ્ધ નથી"</string>
<string name="high_power_desc" msgid="333756885680362741">"બૅટરી ઓપ્ટિમાઇઝેશન લાગુ કરશો નહીં. તેનાથી તમારી બૅટરી વધુ ઝડપથી ખાલી થઈ શકે છે."</string>
- <string name="high_power_prompt_title" msgid="2805745781720454052">"ઍપ્લિકેશનને હંમેશાં પૃષ્ઠભૂમિમાં ચાલવા દઈએ?"</string>
- <string name="high_power_prompt_body" msgid="8067395096053552289">"<xliff:g id="APP_NAME">%1$s</xliff:g>ને હંમેશાં પૃષ્ઠભૂમિમાં ચાલવાની મંજૂરી આપવાથી બૅટરી આવરદા ઓછી થઈ શકે છે. \n\nતમે આને સેટિંગ્સ > ઍપ્લિકેશનો અને સૂચનાઓમાં પછીથી બદલી શકો છો."</string>
+ <string name="high_power_prompt_title" msgid="2805745781720454052">"ઍપને હંમેશાં બૅકગ્રાઉન્ડમાં ચાલવા દઈએ?"</string>
+ <string name="high_power_prompt_body" msgid="8067395096053552289">"<xliff:g id="APP_NAME">%1$s</xliff:g>ને હંમેશાં બૅકગ્રાઉન્ડમાં ચાલવાની મંજૂરી આપવાથી બૅટરી આવરદા ઓછી થઈ શકે છે. \n\nતમે આને સેટિંગ > ઍપ અને નોટિફિકેશનોમાં પછીથી બદલી શકો છો."</string>
<string name="battery_summary" msgid="4345690800899981339">"છેલ્લા પૂર્ણ ચાર્જ પછી <xliff:g id="PERCENTAGE">%1$s</xliff:g> ઉપયોગ"</string>
<string name="battery_power_management" msgid="2853925857548647969">"પાવર સંચાલન"</string>
<string name="no_battery_summary" msgid="4105932628367471314">"છેલ્લા પૂર્ણ ચાર્જ પછી કોઈ બૅટરી ઉપયોગ નહીં"</string>
@@ -4081,7 +4081,7 @@
<string name="quick_settings_developer_tiles" msgid="7423485925757678719">"ઝપડી સેટિંગ્સ વિકાસકર્તા ટાઇલ"</string>
<string name="winscope_trace_quick_settings_title" msgid="940971040388411374">"Winscope ટ્રેસ"</string>
<string name="sensors_off_quick_settings_title" msgid="3655699045300438902">"સેન્સર બંધ છે"</string>
- <string name="managed_profile_settings_title" msgid="4340409321523532402">"કાર્યાલયની પ્રોફાઇલના સેટિંગ"</string>
+ <string name="managed_profile_settings_title" msgid="4340409321523532402">"ઑફિસની પ્રોફાઇલના સેટિંગ"</string>
<string name="managed_profile_contact_search_title" msgid="7337225196804457095">"સંપર્ક શોધ"</string>
<string name="managed_profile_contact_search_summary" msgid="7278267480246726951">"કૉલર્સ અને સંપર્કોને ઓળખવા માટે તમારી સંસ્થા દ્વારા સંપર્ક શોધની મંજૂરી આપો"</string>
<string name="cross_profile_calendar_title" msgid="2351605904015067145">"ક્રૉસ-પ્રોફાઇલ કૅલેન્ડર"</string>
@@ -4473,7 +4473,7 @@
<string name="privacy_dashboard_title" msgid="8764930992456607513">"પ્રાઇવસી"</string>
<string name="privacy_dashboard_summary" msgid="7916431309860824945">"પરવાનગીઓ, એકાઉન્ટ પ્રવૃત્તિ, વ્યક્તિગત ડેટા"</string>
<string name="contextual_card_dismiss_remove" msgid="1750420285615827309">"કાઢી નાખો"</string>
- <string name="contextual_card_dismiss_keep" msgid="3204450672928193661">"રાખો"</string>
+ <string name="contextual_card_dismiss_keep" msgid="3204450672928193661">"Keep"</string>
<string name="contextual_card_dismiss_confirm_message" msgid="2352465079667730312">"આ સુઝાવ કાઢી નાખીએ?"</string>
<string name="contextual_card_removed_message" msgid="4047307820743366876">"સૂચન કાઢી નાખ્યું"</string>
<string name="contextual_card_undo_dismissal_text" msgid="5009245286931852012">"છેલ્લો ફેરફાર રદ કરો"</string>
diff --git a/tests/CarDeveloperOptions/res/values-hi/arrays.xml b/tests/CarDeveloperOptions/res/values-hi/arrays.xml
index 960b98f..acc4345 100644
--- a/tests/CarDeveloperOptions/res/values-hi/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-hi/arrays.xml
@@ -477,7 +477,7 @@
<item msgid="1008268820118852416">"इस कनेक्शन में डेटा से जुड़ी पाबंदी नहीं है"</item>
</string-array>
<string-array name="wifi_privacy_entries">
- <item msgid="6545683814310036454">"किसी भी MAC पते का इस्तेमाल करें (डिफ़ॉल्ट सेटिंग)"</item>
+ <item msgid="6545683814310036454">"MAC पते का इस्तेमाल करें (डिफ़ॉल्ट सेटिंग)"</item>
<item msgid="214234417308375326">"डिवाइस के एमएसी का इस्तेमाल करें"</item>
</string-array>
<string-array name="wifi_hidden_entries">
diff --git a/tests/CarDeveloperOptions/res/values-hi/strings.xml b/tests/CarDeveloperOptions/res/values-hi/strings.xml
index d782f50..4f076a9 100644
--- a/tests/CarDeveloperOptions/res/values-hi/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-hi/strings.xml
@@ -935,13 +935,13 @@
<string name="wifi_privacy_settings" msgid="4462092795794247809">"निजता"</string>
<string name="wifi_privacy_settings_ephemeral_summary" msgid="2411375348287064283">"अपने आप चुना गया एमएसी"</string>
<string name="wifi_dpp_add_device_to_network" msgid="8871041525483253430">"कोई डिवाइस जोड़ें"</string>
- <string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"डिवाइस को “<xliff:g id="SSID">%1$s</xliff:g>” से जोड़ने के लिए QR कोड को कैमरा विंडो के बीच में लाएं"</string>
+ <string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"डिवाइस को “<xliff:g id="SSID">%1$s</xliff:g>” से जोड़ने के लिए क्यूआर कोड को कैमरा विंडो के बीच में लाएं"</string>
<string name="wifi_dpp_scan_qr_code" msgid="6021600592661235546">"QR कोड स्कैन करें"</string>
<string name="wifi_dpp_scan_qr_code_join_network" msgid="3085162928804379545">"डिवाइस को “<xliff:g id="SSID">%1$s</xliff:g>” से जोड़ने के लिए QR कोड को नीचे मौजूद कैमरा विंडो के बीच में लाएं"</string>
- <string name="wifi_dpp_scan_qr_code_join_unknown_network" msgid="5682308317067290738">"QR कोड स्कैन करके वाई-फ़ाई से जुड़ें"</string>
+ <string name="wifi_dpp_scan_qr_code_join_unknown_network" msgid="5682308317067290738">"क्यूआर कोड स्कैन करके वाई-फ़ाई से जुड़ें"</string>
<string name="wifi_dpp_share_wifi" msgid="1724161216219646284">"वाई-फ़ाई शेयर करें"</string>
<string name="wifi_dpp_scan_qr_code_with_another_device" msgid="4357387474444884759">"“<xliff:g id="SSID">%1$s</xliff:g>” से जुड़ने के लिए इस QR कोड को स्कैन करें और पासवर्ड शेयर करें"</string>
- <string name="wifi_dpp_scan_open_network_qr_code_with_another_device" msgid="572011882416511818">"“<xliff:g id="SSID">%1$s</xliff:g>” से जुड़ने के लिए इस QR कोड को स्कैन करें"</string>
+ <string name="wifi_dpp_scan_open_network_qr_code_with_another_device" msgid="572011882416511818">"“<xliff:g id="SSID">%1$s</xliff:g>” से जुड़ने के लिए इस क्यूआर कोड को स्कैन करें"</string>
<string name="wifi_dpp_could_not_detect_valid_qr_code" msgid="27667719861826438">"QR कोड नहीं पहचाना जा सका. कोड को बीच में रखें और दोबारा कोशिश करें"</string>
<string name="wifi_dpp_failure_authentication_or_configuration" msgid="9142051662156233679">"फिर से कोशिश करें. अगर समस्या ठीक नहीं होती है, तो डिवाइस बनाने वाली कंपनी से संपर्क करें"</string>
<string name="wifi_dpp_failure_not_compatible" msgid="4320027179973678283">"काेई गड़बड़ी हुई"</string>
@@ -1621,7 +1621,7 @@
<string name="tether_settings_disabled_on_data_saver" msgid="3682544845899910726">"डेटा बचाने की सेटिंग चालू होने पर इंटरनेट शेयर नहीं किया जा सकता या पोर्टेबल हॉटस्पॉट का इस्तेमाल नहीं किया जा सकता"</string>
<string name="usb_title" msgid="7480927657535578688">"यूएसबी"</string>
<string name="usb_tethering_button_text" msgid="6242228383142012332">"यूएसबी से टेदरिंग"</string>
- <string name="usb_tethering_subtext" product="default" msgid="1573513260339548671">"यूएसबी के ज़रिए फ़ोन का इंटरनेट कनेक्शन शेयर करें"</string>
+ <string name="usb_tethering_subtext" product="default" msgid="1573513260339548671">"यूएसबी से फ़ोन का इंटरनेट कनेक्शन शेयर करें"</string>
<string name="usb_tethering_subtext" product="tablet" msgid="154536000235361034">"यूएसबी के ज़रिए टैबलेट का इंटरनेट कनेक्शन शेयर करें"</string>
<string name="bluetooth_tether_checkbox_text" msgid="7257293066139372774">"ब्लूटूथ टेदरिंग"</string>
<string name="bluetooth_tethering_subtext" product="tablet" msgid="6868756914621131635">"ब्लूटूथ के ज़रिए टैबलेट का इंटरनेट कनेक्शन शेयर करें"</string>
@@ -1656,7 +1656,7 @@
</plurals>
<string name="location_category_recent_location_access" msgid="286059523360285026">"हाल ही में ऐक्सेस की गई जगह की जानकारी"</string>
<string name="location_recent_location_access_view_details" msgid="2051602261436245905">"जानकारी देखें"</string>
- <string name="location_no_recent_apps" msgid="77502059586413278">"किसी भी ऐप ने हाल में जगह का अनुरोध नहीं किया है"</string>
+ <string name="location_no_recent_apps" msgid="77502059586413278">"किसी भी ऐप्लिकेशन ने हाल में जगह की जानकारी नहीं मांगी है"</string>
<string name="location_no_recent_accesses" msgid="6289916310397279890">"किसी भी ऐप्लिकेशन ने हाल ही में जगह की जानकारी का इस्तेमाल नहीं किया"</string>
<string name="location_high_battery_use" msgid="7177199869979522663">"ज़्यादा बैटरी उपयोग"</string>
<string name="location_low_battery_use" msgid="5030448574501435888">"कम बैटरी उपयोग"</string>
@@ -2429,7 +2429,7 @@
<string name="battery_detail_since_full_charge" msgid="3814176986148084378">"पूरी तरह चार्ज होने के बाद से अब तक का विश्लेषण"</string>
<string name="battery_last_full_charge" msgid="5624033030647170717">"पिछली बार पूरी तरह चार्ज किया गया"</string>
<string name="battery_full_charge_last" msgid="4614554109170251301">"बैटरी पूरी चार्ज होने पर करीब इतनी देर चलती है"</string>
- <string name="battery_footer_summary" msgid="4828444679643906943">"बैटरी के इस्तेमाल का यह डेटा अनुमान के हिसाब से है और यह इस्तेमाल करने के तरीके के मुताबिक बदल सकता है"</string>
+ <string name="battery_footer_summary" msgid="4828444679643906943">"बैटरी के इस्तेमाल का यह डेटा अनुमान के हिसाब से है. यह इस्तेमाल करने के तरीके के मुताबिक बदल सकता है"</string>
<string name="battery_detail_foreground" msgid="6616408559186553085">"जब इस्तेमाल में हो"</string>
<string name="battery_detail_background" msgid="7938146832943604280">"बैकग्राउंड में होने पर"</string>
<string name="battery_detail_power_usage" msgid="3606930232257489212">"बैटरी खर्च"</string>
@@ -3878,7 +3878,7 @@
<string name="disabled_by_policy_title_camera" msgid="3741138901926111197">"कैमरा की अनुमति नहीं है"</string>
<string name="disabled_by_policy_title_screen_capture" msgid="1856835333536274665">"स्क्रीनशॉट की अनुमति नहीं है"</string>
<string name="disabled_by_policy_title_suspend_packages" msgid="4254714213391802322">"इस ऐप्लिकेशन को खोला नहीं जा सकता"</string>
- <string name="default_admin_support_msg" msgid="5789424433689798637">"अगर आपके कोई सवाल हैं तो, अपने आईटी एडमिन से संपर्क करें"</string>
+ <string name="default_admin_support_msg" msgid="5789424433689798637">"अगर आपके कोई सवाल हैं, तो अपने आईटी एडमिन से संपर्क करें"</string>
<string name="admin_support_more_info" msgid="8737842638087863477">"ज़्यादा विवरण"</string>
<string name="admin_profile_owner_message" msgid="3199544166281052845">"आपका एडमिन आपकी वर्क प्रोफ़ाइल से जुड़े ऐप और डेटा की निगरानी और उनका प्रबंधन कर सकता है, जिनमें सेटिंग, अनुमतियां, कॉर्पोरेट पहुंच, नेटवर्क गतिविधि और डिवाइस के जगह की जानकारी शामिल हैं."</string>
<string name="admin_profile_owner_user_message" msgid="2991249382056855531">"आपका एडमिन इस उपयोगकर्ता से जुड़े ऐप्लिकेशन और डेटा की निगरानी और उनका प्रबंधन कर सकता है, जिनमें सेटिंग, अनुमतियां, कॉर्पोरेट पहुंच, नेटवर्क गतिविधि और डिवाइस के जगह की जानकारी शामिल है."</string>
@@ -4473,7 +4473,7 @@
<string name="privacy_dashboard_title" msgid="8764930992456607513">"निजता"</string>
<string name="privacy_dashboard_summary" msgid="7916431309860824945">"अनुमतियां, खाता गतिविधि, निजी डेटा"</string>
<string name="contextual_card_dismiss_remove" msgid="1750420285615827309">"हटाएं"</string>
- <string name="contextual_card_dismiss_keep" msgid="3204450672928193661">"रखें"</string>
+ <string name="contextual_card_dismiss_keep" msgid="3204450672928193661">"Keep"</string>
<string name="contextual_card_dismiss_confirm_message" msgid="2352465079667730312">"यह सुझाव हटा दें?"</string>
<string name="contextual_card_removed_message" msgid="4047307820743366876">"सुझाव हटाया गया"</string>
<string name="contextual_card_undo_dismissal_text" msgid="5009245286931852012">"पहले जैसा करें"</string>
diff --git a/tests/CarDeveloperOptions/res/values-hr/arrays.xml b/tests/CarDeveloperOptions/res/values-hr/arrays.xml
index 732f9bf..238797e 100644
--- a/tests/CarDeveloperOptions/res/values-hr/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-hr/arrays.xml
@@ -477,7 +477,7 @@
<item msgid="1008268820118852416">"Mreža bez ograničenja prometa"</item>
</string-array>
<string-array name="wifi_privacy_entries">
- <item msgid="6545683814310036454">"Koristi nasumično određen MAC (zadano)"</item>
+ <item msgid="6545683814310036454">"Koristi nasumičnu MAC adresu (zadano)"</item>
<item msgid="214234417308375326">"Upotrijebite MAC uređaja"</item>
</string-array>
<string-array name="wifi_hidden_entries">
diff --git a/tests/CarDeveloperOptions/res/values-hr/strings.xml b/tests/CarDeveloperOptions/res/values-hr/strings.xml
index 11c9881..9c8ce06 100644
--- a/tests/CarDeveloperOptions/res/values-hr/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-hr/strings.xml
@@ -956,7 +956,7 @@
<string name="wifi_dpp_scan_qr_code" msgid="6021600592661235546">"Skeniraj QR kôd"</string>
<string name="wifi_dpp_scan_qr_code_join_network" msgid="3085162928804379545">"Centrirajte QR kôd u nastavku da biste se povezali s mrežom “<xliff:g id="SSID">%1$s</xliff:g>”"</string>
<string name="wifi_dpp_scan_qr_code_join_unknown_network" msgid="5682308317067290738">"Pridružite se Wi‑Fiju tako što ćete skenirati QR kôd"</string>
- <string name="wifi_dpp_share_wifi" msgid="1724161216219646284">"Dijeli Wi‑Fi"</string>
+ <string name="wifi_dpp_share_wifi" msgid="1724161216219646284">"Dijelite Wi‑Fi"</string>
<string name="wifi_dpp_scan_qr_code_with_another_device" msgid="4357387474444884759">"Skenirajte ovaj QR kôd da biste se povezali s mrežom \"<xliff:g id="SSID">%1$s</xliff:g>\" i podijelili zaporku"</string>
<string name="wifi_dpp_scan_open_network_qr_code_with_another_device" msgid="572011882416511818">"Skenirajte ovaj QR kôd da biste se povezali s mrežom \"<xliff:g id="SSID">%1$s</xliff:g>\""</string>
<string name="wifi_dpp_could_not_detect_valid_qr_code" msgid="27667719861826438">"Čitanje QR koda nije uspjelo. Ponovo centrirajte kôd, a zatim pokušajte opet"</string>
@@ -1038,7 +1038,7 @@
<string name="wifi_advanced_ssid_title" msgid="4229741334913894856">"SSID"</string>
<string name="wifi_advanced_mac_address_title" msgid="1162782083754021737">"MAC adresa"</string>
<string name="wifi_advanced_ip_address_title" msgid="2708185994512829071">"IP adresa"</string>
- <string name="wifi_details_title" msgid="2164042631550920157">"Pojedinosti o mreži"</string>
+ <string name="wifi_details_title" msgid="2164042631550920157">"Podaci o mreži"</string>
<string name="wifi_details_subnet_mask" msgid="53396707004763012">"Maska podmreže"</string>
<string name="wifi_details_dns" msgid="1118251455740116559">"DNS"</string>
<string name="wifi_details_ipv6_address_header" msgid="1642310137145363299">"IPv6 adrese"</string>
@@ -1639,7 +1639,7 @@
<string name="tether_settings_summary_hotspot_off_tether_on" msgid="1349909238672649877">"Modemsko povezivanje"</string>
<string name="tether_settings_disabled_on_data_saver" msgid="3682544845899910726">"Dok je Štednja podatkovnog prometa uključena, ne možete upotrebljavati modemsko povezivanje ni prijenosne žarišne točke"</string>
<string name="usb_title" msgid="7480927657535578688">"USB"</string>
- <string name="usb_tethering_button_text" msgid="6242228383142012332">"Dijeljenje USB-om"</string>
+ <string name="usb_tethering_button_text" msgid="6242228383142012332">"Dijeljenje veze USB-om"</string>
<string name="usb_tethering_subtext" product="default" msgid="1573513260339548671">"Dijelite internetsku vezu telefona putem USB-a"</string>
<string name="usb_tethering_subtext" product="tablet" msgid="154536000235361034">"Dijelite internetsku vezu tableta putem USB-a"</string>
<string name="bluetooth_tether_checkbox_text" msgid="7257293066139372774">"Dijeljenje veze Bluetoothom"</string>
@@ -4052,7 +4052,7 @@
<string name="launch_mdp_app_text" msgid="9186559496664208252">"Prikaži plan"</string>
<string name="launch_wifi_text" msgid="317820210431682605">"Prikaz pojedinosti"</string>
<string name="data_saver_title" msgid="7903308134514179256">"Štednja podatkovnog prometa"</string>
- <string name="unrestricted_data_saver" msgid="9139401849550738720">"Neograničena potrošnja"</string>
+ <string name="unrestricted_data_saver" msgid="9139401849550738720">"Neograničeni podaci"</string>
<string name="restrict_background_blacklisted" msgid="7158991683849067124">"Pozadinski su podaci isključeni"</string>
<string name="data_saver_on" msgid="7281809065420480881">"Uključeno"</string>
<string name="data_saver_off" msgid="7439439787358504018">"Isključeno"</string>
@@ -4118,7 +4118,7 @@
<string name="display_cutout_emulation_keywords" msgid="6795671536772871439">"obrezana slika za zaslon, urez"</string>
<string name="overlay_option_device_default" msgid="165508753381657697">"Zadana postavka uređaja"</string>
<string name="overlay_toast_failed_to_apply" msgid="5692251825129250040">"Primjena preklapanja nije uspjela"</string>
- <string name="special_access" msgid="1453926335914696206">"Pristup aplikacija"</string>
+ <string name="special_access" msgid="1453926335914696206">"Poseban pristup za aplikacije"</string>
<plurals name="special_access_summary" formatted="false" msgid="5182092345063909346">
<item quantity="one"><xliff:g id="COUNT">%d</xliff:g> aplikacija može upotrebljavati neograničene podatke</item>
<item quantity="few"><xliff:g id="COUNT">%d</xliff:g> aplikacije mogu upotrebljavati neograničene podatke</item>
@@ -4409,7 +4409,7 @@
<string name="prevent_ringing_option_vibrate_summary" msgid="7961818570574683926">"Uključeno (vibracija)"</string>
<string name="prevent_ringing_option_mute_summary" msgid="3509459199090688328">"Uključi (isključi zvuk)"</string>
<string name="prevent_ringing_option_none_summary" msgid="5152618221093037451">"Isključi"</string>
- <string name="pref_title_network_details" msgid="3971074015034595956">"Pojedinosti o mreži"</string>
+ <string name="pref_title_network_details" msgid="3971074015034595956">"Podaci o mreži"</string>
<string name="about_phone_device_name_warning" msgid="9088572775969880106">"Naziv vašeg uređaja vidljiv je aplikacijama na vašem telefonu. Mogu ga vidjeti i drugi ljudi kada se povežete s Bluetooth uređajima ili postavite Wi-Fi žarišnu točku."</string>
<string name="devices_title" msgid="4768432575951993648">"Uređaji"</string>
<string name="homepage_all_settings" msgid="3201220879559136116">"Sve postavke"</string>
diff --git a/tests/CarDeveloperOptions/res/values-hy/arrays.xml b/tests/CarDeveloperOptions/res/values-hy/arrays.xml
index f7c9118..c4c9599 100644
--- a/tests/CarDeveloperOptions/res/values-hy/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-hy/arrays.xml
@@ -472,7 +472,7 @@
<item msgid="3118234477029486741">"0"</item>
</string-array>
<string-array name="wifi_metered_entries">
- <item msgid="4329206416008519163">"Ավտոմատ հայտնաբերում"</item>
+ <item msgid="4329206416008519163">"Ավտոմատ որոշում"</item>
<item msgid="773943026484148895">"Սահմանափակ"</item>
<item msgid="1008268820118852416">"Անսահմանափակ"</item>
</string-array>
diff --git a/tests/CarDeveloperOptions/res/values-hy/strings.xml b/tests/CarDeveloperOptions/res/values-hy/strings.xml
index a9c6f19..668f88f 100644
--- a/tests/CarDeveloperOptions/res/values-hy/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-hy/strings.xml
@@ -65,7 +65,7 @@
<string name="radioInfo_phone_offhook" msgid="3186071430568806208">"Զանգն ընթանում է"</string>
<string name="radioInfo_data_disconnected" msgid="5311119240521915279">"Անջատված է"</string>
<string name="radioInfo_data_connecting" msgid="47095003276717745">"Միանում է"</string>
- <string name="radioInfo_data_connected" msgid="3755289851642913750">"Կապակցված է"</string>
+ <string name="radioInfo_data_connected" msgid="3755289851642913750">"Միացված է"</string>
<string name="radioInfo_data_suspended" msgid="5013451375409737795">"Անջատված"</string>
<string name="radioInfo_unknown" msgid="3148839102896278859">"Անհայտ"</string>
<string name="radioInfo_display_packets" msgid="5472652398031589527">"pkts"</string>
@@ -918,7 +918,7 @@
<string name="please_select_phase2" msgid="5848080896810435677">"Փուլ 2-ի նույնականացում"</string>
<string name="wifi_eap_ca_cert" msgid="1496395241849383785">"CA հավաստագիր"</string>
<string name="wifi_eap_domain" msgid="3298302320003640130">"Տիրույթ"</string>
- <string name="wifi_eap_user_cert" msgid="6786839531765719173">"Օգտատիրոջ վկայական"</string>
+ <string name="wifi_eap_user_cert" msgid="6786839531765719173">"Օգտատիրոջ հավաստագիր"</string>
<string name="wifi_eap_identity" msgid="5280457017705738773">"Ինքնություն"</string>
<string name="wifi_eap_anonymous" msgid="6352344972490839958">"Անանուն ինքնություն"</string>
<string name="wifi_password" msgid="6942983531275177771">"Գաղտնաբառ"</string>
@@ -934,9 +934,9 @@
<string name="wifi_ip_settings" msgid="4636102290236116946">"IP կարգավորումներ"</string>
<string name="wifi_privacy_settings" msgid="4462092795794247809">"Գաղտնիություն"</string>
<string name="wifi_privacy_settings_ephemeral_summary" msgid="2411375348287064283">"Պատահական ընտրված MAC"</string>
- <string name="wifi_dpp_add_device_to_network" msgid="8871041525483253430">"Ավելացնել սարք"</string>
+ <string name="wifi_dpp_add_device_to_network" msgid="8871041525483253430">"Ավելացրեք սարք"</string>
<string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"Սարքը «<xliff:g id="SSID">%1$s</xliff:g>» ցանցին ավելացնելու համար տեսախցիկը պահեք QR կոդի վրա"</string>
- <string name="wifi_dpp_scan_qr_code" msgid="6021600592661235546">"Սկանավորել QR կոդը"</string>
+ <string name="wifi_dpp_scan_qr_code" msgid="6021600592661235546">"Սկանավորեք QR կոդը"</string>
<string name="wifi_dpp_scan_qr_code_join_network" msgid="3085162928804379545">"«<xliff:g id="SSID">%1$s</xliff:g>» ցանցին միանալու համար տեսախցիկը պահեք QR կոդի վրա"</string>
<string name="wifi_dpp_scan_qr_code_join_unknown_network" msgid="5682308317067290738">"Wi‑Fi ցանցին միանալու համար սկանավորեք QR կոդը"</string>
<string name="wifi_dpp_share_wifi" msgid="1724161216219646284">"Կիսվել Wi‑Fi-ով"</string>
@@ -951,11 +951,11 @@
<string name="wifi_dpp_check_connection_try_again" msgid="7144663015219170999">"Ստուգեք ինտերնետ կապը և նորից փորձեք"</string>
<string name="wifi_dpp_choose_network" msgid="6251424431594491691">"Ընտրեք ցանց"</string>
<string name="wifi_dpp_choose_network_to_connect_device" msgid="6385259857886784285">"Սարքը միացնելու համար ընտրեք ցանցը"</string>
- <string name="wifi_dpp_add_device_to_wifi" msgid="6454198064645462446">"Կապակցե՞լ այս սարքը «<xliff:g id="SSID">%1$s</xliff:g>» ցանցին"</string>
+ <string name="wifi_dpp_add_device_to_wifi" msgid="6454198064645462446">"Կապե՞լ այս սարքը «<xliff:g id="SSID">%1$s</xliff:g>» ցանցին"</string>
<string name="wifi_dpp_wifi_shared_with_device" msgid="5713765471758272471">"Սարքը միացված է Wi‑Fi-ին"</string>
<string name="wifi_dpp_add_another_device" msgid="3698441567235301565">"Կապացել այլ սարք"</string>
<string name="wifi_dpp_choose_different_network" msgid="128515107488187050">"Ընտրել այլ ցանց"</string>
- <string name="wifi_dpp_could_not_add_device" msgid="4966109556543584813">"Չհաջողվեց ավելացնել սարք"</string>
+ <string name="wifi_dpp_could_not_add_device" msgid="4966109556543584813">"Չհաջողվեց ավելացնել սարքը"</string>
<string name="wifi_dpp_device_found" msgid="6488461467496850841">"Գտնվել է 1 սարք"</string>
<string name="wifi_dpp_sharing_wifi_with_this_device" msgid="2540529164687476827">"Սարքը միանում է Wi‑Fi-ին…"</string>
<string name="wifi_dpp_connecting" msgid="4229290407210299897">"Միացում…"</string>
@@ -3277,7 +3277,7 @@
<string name="zen_onboarding_settings" msgid="1416466597876383322">"Կարգավորումներ"</string>
<string name="zen_onboarding_new_setting_title" msgid="3622673375041304362">"Ամբողջությամբ անջատել ծանուցումները"</string>
<string name="zen_onboarding_current_setting_title" msgid="2560330551761407563">"Անջատել ծանուցումների ձայնը"</string>
- <string name="zen_onboarding_new_setting_summary" msgid="8264430315983860075">"Ծանուցումներն ամբողջությամբ կանջատվեն։ Դուք կստանաք միայն աստղանշված կոնտակտներից և կրկնվող զանգեր։"</string>
+ <string name="zen_onboarding_new_setting_summary" msgid="8264430315983860075">"Ծանուցումներն ամբողջությամբ կանջատվեն։ Զանգեր կստանաք միայն աստղանշված և հաճախակի զանգող բաժանորդներից։"</string>
<string name="zen_onboarding_current_setting_summary" msgid="3569246708507270821">"(ընթացիկ կարգավորումը)"</string>
<string name="zen_onboarding_dnd_visual_disturbances_header" msgid="7584229011611927613">"Փոփոխե՞լ «Չանհանգստացնել» ռեժիմի ծանուցումների կարգավորումները"</string>
<string name="sound_work_settings" msgid="4140215240360927923">"Աշխատանքային պրոֆիլի ձայները"</string>
@@ -3493,7 +3493,7 @@
<string name="zen_mode_from_anyone" msgid="7778836826814131083">"Բոլորից"</string>
<string name="zen_mode_from_contacts" msgid="267034158294332688">"Միայն կոնտակտներից"</string>
<string name="zen_mode_from_starred" msgid="7349984569117392260">"Միայն աստղանշված կոնտակտներից"</string>
- <string name="zen_calls_summary_starred_repeat" msgid="9191394641577678207">"Աստղանշված կոնտակտներից և կրկնվող զանգեր"</string>
+ <string name="zen_calls_summary_starred_repeat" msgid="9191394641577678207">"Աստղանշված և հաճախակի զանգող բաժանորդներից"</string>
<string name="zen_calls_summary_contacts_repeat" msgid="7747592096431111510">"Կոնտակտներից և կրկնվող զանգեր"</string>
<string name="zen_calls_summary_repeat_only" msgid="8839703337232747964">"Միայն կրկնվող զանգեր"</string>
<string name="zen_mode_from_none" msgid="7683889985618637010">"Ոչ ոքից"</string>
@@ -3630,7 +3630,7 @@
<item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> լրացուցիչ թույլտվություն</item>
</plurals>
<string name="runtime_permissions_summary_no_permissions_granted" msgid="3477934429220828771">"Թույլտվություններ չեն շնորհվել"</string>
- <string name="runtime_permissions_summary_no_permissions_requested" msgid="3901636077467389637">"Թույլտվություններ չեն հայցվել"</string>
+ <string name="runtime_permissions_summary_no_permissions_requested" msgid="3901636077467389637">"Հավելվածը թույլտվություններ չի պահանջել"</string>
<string name="filter_all_apps" msgid="4042756539846043675">"Բոլոր հավելվածները"</string>
<string name="filter_enabled_apps" msgid="5888459261768538489">"Տեղադրված հավելվածներ"</string>
<string name="filter_instant_apps" msgid="8087483282854072366">"Ակնթարթային հավելվածները"</string>
@@ -4071,14 +4071,14 @@
<string name="premium_sms_warning" msgid="7604011651486294515">"Վճարովի SMS-ները կարող են լրացուցիչ ծախսեր առաջացնել: Հավելվածին թույտվություն տալու դեպքում կկարողանաք դրա միջոցով վճարովի SMS-ներ ուղարկել։"</string>
<string name="premium_sms_access" msgid="4550027460595822851">"Վճարովի SMS"</string>
<string name="bluetooth_disabled" msgid="6588102116819268238">"Անջատված է"</string>
- <string name="bluetooth_connected_summary" msgid="439920840053965217">"Կապակցված է <xliff:g id="ID_1">%1$s</xliff:g>-ին"</string>
- <string name="bluetooth_connected_multiple_devices_summary" msgid="596205630653123250">"Կապակցված է բազմակի շարժական սարքերի"</string>
+ <string name="bluetooth_connected_summary" msgid="439920840053965217">"Միացված է <xliff:g id="ID_1">%1$s</xliff:g>-ին"</string>
+ <string name="bluetooth_connected_multiple_devices_summary" msgid="596205630653123250">"Միացված է բազմակի շարժական սարքերի"</string>
<string name="demo_mode" msgid="3831081808592541104">"Համակարգի միջերեսի ցուցադրական ռեժիմ"</string>
<string name="dark_ui_mode" msgid="703844190192599217">"Թեմա"</string>
<string name="dark_ui_mode_title" msgid="8774932716427742413">"Ընտրել թեմա"</string>
<string name="dark_ui_settings_light_summary" msgid="5219102347744462812">"Այս կարգավորումը կիրառվում է նաև հավելվածների համար"</string>
<string name="dark_ui_settings_dark_summary" msgid="7042737828943784289">"Աջակցվող հավելվածները ևս կանցնեն մուգ թեմային"</string>
- <string name="quick_settings_developer_tiles" msgid="7423485925757678719">"Մշակողի արագ կարգավորման սալիկներ"</string>
+ <string name="quick_settings_developer_tiles" msgid="7423485925757678719">"Ծրագրավորողի արագ կարգավորման սալիկներ"</string>
<string name="winscope_trace_quick_settings_title" msgid="940971040388411374">"Winscope-ի հետագծում"</string>
<string name="sensors_off_quick_settings_title" msgid="3655699045300438902">"Տվիչներն անջատված են"</string>
<string name="managed_profile_settings_title" msgid="4340409321523532402">"Աշխատանքային պրոֆիլի կարգավորումներ"</string>
diff --git a/tests/CarDeveloperOptions/res/values-ja/arrays.xml b/tests/CarDeveloperOptions/res/values-ja/arrays.xml
index 6c8a9aa..ebfd9f3 100644
--- a/tests/CarDeveloperOptions/res/values-ja/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-ja/arrays.xml
@@ -477,7 +477,7 @@
<item msgid="1008268820118852416">"定額制として扱う"</item>
</string-array>
<string-array name="wifi_privacy_entries">
- <item msgid="6545683814310036454">"ランダムな MAC を使用する(デフォルト)"</item>
+ <item msgid="6545683814310036454">"ランダム MAC を使用(デフォルト)"</item>
<item msgid="214234417308375326">"デバイスの MAC を使用する"</item>
</string-array>
<string-array name="wifi_hidden_entries">
diff --git a/tests/CarDeveloperOptions/res/values-ja/strings.xml b/tests/CarDeveloperOptions/res/values-ja/strings.xml
index 71cee72..d5ab537 100644
--- a/tests/CarDeveloperOptions/res/values-ja/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-ja/strings.xml
@@ -933,7 +933,7 @@
<string name="wifi_ap_band_select_one" msgid="4409754936554360355">"Wi‑Fi アクセス ポイントの帯域幅を少なくとも 1 つ選択してください。"</string>
<string name="wifi_ip_settings" msgid="4636102290236116946">"IP 設定"</string>
<string name="wifi_privacy_settings" msgid="4462092795794247809">"プライバシー"</string>
- <string name="wifi_privacy_settings_ephemeral_summary" msgid="2411375348287064283">"ランダム化 MAC"</string>
+ <string name="wifi_privacy_settings_ephemeral_summary" msgid="2411375348287064283">"ランダム MAC"</string>
<string name="wifi_dpp_add_device_to_network" msgid="8871041525483253430">"デバイスの追加"</string>
<string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"「<xliff:g id="SSID">%1$s</xliff:g>」にデバイスを追加するには、下の枠に QR コードを合わせてください"</string>
<string name="wifi_dpp_scan_qr_code" msgid="6021600592661235546">"QR コードのスキャン"</string>
@@ -4124,7 +4124,7 @@
<string name="ambient_display_title" product="tablet" msgid="1106285490888683613">"タブレットの画面をダブルタップして通知をチェック"</string>
<string name="ambient_display_title" product="device" msgid="5064644474876041478">"デバイスの画面をダブルタップして通知をチェック"</string>
<string name="ambient_display_summary" msgid="4882910328216411109">"画面をダブルタップして、時刻、通知などの情報を確認できます。"</string>
- <string name="ambient_display_pickup_title" product="default" msgid="7141652156907066938">"デバイスを持ち上げて通知を確認"</string>
+ <string name="ambient_display_pickup_title" product="default" msgid="7141652156907066938">"スマートフォンを持ち上げて通知を確認"</string>
<string name="ambient_display_pickup_title" product="tablet" msgid="1555456400210301959">"タブレットを持ち上げて通知をチェック"</string>
<string name="ambient_display_pickup_title" product="device" msgid="2480126522988135037">"デバイスを持ち上げて通知をチェック"</string>
<string name="ambient_display_wake_screen_title" msgid="3376988352851077102">"ディスプレイの復帰"</string>
diff --git a/tests/CarDeveloperOptions/res/values-ka/strings.xml b/tests/CarDeveloperOptions/res/values-ka/strings.xml
index 1c2702a..f38954f 100644
--- a/tests/CarDeveloperOptions/res/values-ka/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-ka/strings.xml
@@ -2240,7 +2240,7 @@
<string name="background_activity_warning_dialog_title" msgid="2170790412855899678">"გსურთ ფონური აქტივობის შეზღუდვა?"</string>
<string name="background_activity_warning_dialog_text" msgid="8242749826732375096">"აპისთვის ფონური აქტივობის შეზღუდვის შემთხვევაში, მან შეიძლება არასათანადოდ იმუშაოს"</string>
<string name="background_activity_disabled_dialog_text" msgid="4234598000779459640">"რადგან ეს აპი ბატარეის ოპტიმიზებისთვის დაყენებული არაა, მას ვერ შეზღუდავთ.\n\nჩართეთ ბატარეის ოპტიმიზაცია აპის შესაზღუდავად."</string>
- <string name="device_screen_usage" msgid="4470485475363132750">"ეკრანის მოხმარება ბოლო სრული დატენვიდან"</string>
+ <string name="device_screen_usage" msgid="4470485475363132750">"ეკრანის გამოყენება ბოლო სრული დატენვიდან"</string>
<string name="power_usage_list_summary" msgid="4314438658308211057">"ბატარეის მოხმარება ბოლო სრული დატენვიდან"</string>
<string name="screen_usage_summary" msgid="263396144684078341">"დროის ხანგრძლივობა სრული დატენვიდან, რომლის განმავლობაშიც ეკრანი ჩართული იყო"</string>
<string name="device_usage_list_summary" msgid="8299017481332816368">"მოწყობილობის მოხმარება ბოლო სრული დატენვიდან"</string>
diff --git a/tests/CarDeveloperOptions/res/values-kk/strings.xml b/tests/CarDeveloperOptions/res/values-kk/strings.xml
index 6e23e5a..e3e870a 100644
--- a/tests/CarDeveloperOptions/res/values-kk/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-kk/strings.xml
@@ -857,7 +857,7 @@
<string name="wifi_poor_network_detection_summary" msgid="5539951465985614590">"Интернет байланысы жақсы болмаса, Wi‑Fi желісі қолданылмайды"</string>
<string name="wifi_avoid_poor_network_detection_summary" msgid="1976503191780928104">"Тек жақсы интернет байланысы бар желілерді пайдалану"</string>
<string name="use_open_wifi_automatically_title" msgid="3084513215481454350">"Ашық желілерге қосылу"</string>
- <string name="use_open_wifi_automatically_summary" msgid="8338020172673161754">"Жоғары сапалы ашық желілерге автоматты қосылу"</string>
+ <string name="use_open_wifi_automatically_summary" msgid="8338020172673161754">"Жоғары сапалы қоғамдық желілерге автоматты қосылу"</string>
<string name="use_open_wifi_automatically_summary_scoring_disabled" msgid="1559329344492373028">"Пайдалану үшін желіні бағалау провайдерін таңдаңыз"</string>
<string name="use_open_wifi_automatically_summary_scorer_unsupported_disabled" msgid="1123080670578756834">"Пайдалану үшін үйлесімді желіні бағалау провайдерін таңдаңыз"</string>
<string name="wifi_install_credentials" msgid="5650088113710858289">"Сертификаттар орнату"</string>
@@ -914,13 +914,13 @@
<string name="wifi_ip_address" msgid="5572539114989914831">"IP мекенжайы"</string>
<string name="passpoint_label" msgid="7429247462404128615">"Сақталу жолы"</string>
<string name="passpoint_content" msgid="340527524510304327">"<xliff:g id="NAME">%1$s</xliff:g> тіркелгі деректері"</string>
- <string name="wifi_eap_method" msgid="3752116941487485859">"EAP (кеңейтілген растау протоколы) әдісі"</string>
- <string name="please_select_phase2" msgid="5848080896810435677">"Фаза 2 растауы"</string>
+ <string name="wifi_eap_method" msgid="3752116941487485859">"EAP әдісі"</string>
+ <string name="please_select_phase2" msgid="5848080896810435677">"Аутентификацияның 2-сатысы"</string>
<string name="wifi_eap_ca_cert" msgid="1496395241849383785">"Растама мекемесінің сертификаты"</string>
<string name="wifi_eap_domain" msgid="3298302320003640130">"Домен"</string>
<string name="wifi_eap_user_cert" msgid="6786839531765719173">"Пайдаланушы сертификаты"</string>
<string name="wifi_eap_identity" msgid="5280457017705738773">"Бірлік"</string>
- <string name="wifi_eap_anonymous" msgid="6352344972490839958">"Анонимді бірлік"</string>
+ <string name="wifi_eap_anonymous" msgid="6352344972490839958">"Белгісіз"</string>
<string name="wifi_password" msgid="6942983531275177771">"Құпия сөз"</string>
<string name="wifi_show_password" msgid="7878398590772942202">"Құпия сөзді көрсету"</string>
<string name="wifi_ap_band_config" msgid="6565016368079288433">"Wi-Fi жиілік ауқымын таңдау"</string>
@@ -2043,7 +2043,7 @@
<string name="screen_reader_category_title" msgid="6300714148519645544">"Экранды оқу құралдары"</string>
<string name="audio_and_captions_category_title" msgid="6140472938769619212">"Аудио және экранға шығатын мәтін"</string>
<string name="display_category_title" msgid="545168481672250195">"Дисплей"</string>
- <string name="interaction_control_category_title" msgid="8775039211811947683">"Өзара әрекеттестікті басқару элементтері"</string>
+ <string name="interaction_control_category_title" msgid="8775039211811947683">"Басқару элементтері"</string>
<string name="user_installed_services_category_title" msgid="4288689493753221319">"Жүктеп алынған қызметтер"</string>
<string name="experimental_category_title" msgid="3797000069740110717">"Эксперименттік"</string>
<string name="feature_flags_dashboard_title" msgid="3153034144122754381">"Функция жалаушалары"</string>
@@ -3162,7 +3162,7 @@
<string name="emergency_tone_vibrate" msgid="5020068066905681181">"Діріл"</string>
<string name="boot_sounds_title" msgid="7583926202411353620">"Дыбыстарды қосу"</string>
<string name="live_caption_title" msgid="7926591158657997051">"Live Caption"</string>
- <string name="live_caption_summary" msgid="9064771862352393125">"Автоматты субтитр мультимедиасы"</string>
+ <string name="live_caption_summary" msgid="9064771862352393125">"Автоматты субтитр қосу"</string>
<string name="zen_mode_settings_summary_off" msgid="6929319200478424962">"Ешқашан"</string>
<plurals name="zen_mode_settings_summary_on" formatted="false" msgid="6061723291126091396">
<item quantity="other"><xliff:g id="ON_COUNT">%d</xliff:g> іске қосылды</item>
diff --git a/tests/CarDeveloperOptions/res/values-km/strings.xml b/tests/CarDeveloperOptions/res/values-km/strings.xml
index ea89f0a..e5652ec 100644
--- a/tests/CarDeveloperOptions/res/values-km/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-km/strings.xml
@@ -945,7 +945,7 @@
<string name="wifi_dpp_could_not_detect_valid_qr_code" msgid="27667719861826438">"មិនអាចអានកូដ QR បានទេ។ ដាក់កូដឱ្យនៅចំកណ្ដាលវិញ រួចព្យាយាមម្ដងទៀត"</string>
<string name="wifi_dpp_failure_authentication_or_configuration" msgid="9142051662156233679">"សូមព្យាយាមម្ដងទៀត។ ប្រសិនបើបញ្ហានៅតែបន្តកើតឡើង សូមទាក់ទងក្រុមហ៊ុនផលិតឧបករណ៍"</string>
<string name="wifi_dpp_failure_not_compatible" msgid="4320027179973678283">"មានអ្វីមួយខុសប្រក្រតី"</string>
- <string name="wifi_dpp_failure_timeout" msgid="5060065168142109420">"សូមប្រាកដថាឧបករណ៍ត្រូវបានបើក និងសាកថ្មចូលហើយ"</string>
+ <string name="wifi_dpp_failure_timeout" msgid="5060065168142109420">"សូមប្រាកដថាឧបករណ៍ត្រូវបានដោត សាកថ្ម និងបើក"</string>
<string name="wifi_dpp_failure_generic" msgid="7840142544736640189">"សូមប្រាកដថាឧបករណ៍ត្រូវបានបើក និងសាកថ្មចូលហើយ។ ប្រសិនបើបញ្ហានៅតែបន្តកើតឡើង សូមទាក់ទងក្រុមហ៊ុនផលិតឧបករណ៍"</string>
<string name="wifi_dpp_failure_not_supported" msgid="111779621766171626">"មិនអាចបញ្ចូល “<xliff:g id="SSID">%1$s</xliff:g>” ទៅក្នុងឧបករណ៍នេះបានទេ"</string>
<string name="wifi_dpp_check_connection_try_again" msgid="7144663015219170999">"សូមពិនិត្យមើលការតភ្ជាប់ រួចព្យាយាមម្ដងទៀត"</string>
@@ -2280,7 +2280,7 @@
<string name="battery_tip_early_heads_up_title" msgid="707163785378746813">"បើកកម្មវិធីសន្សំថ្ម"</string>
<string name="battery_tip_early_heads_up_summary" msgid="4231489566422395156">"អាចនឹងឆាប់អស់ថ្មជាងធម្មតា"</string>
<string name="battery_tip_early_heads_up_done_title" msgid="112550885882648429">"កម្មវិធីសន្សំថ្មបានបើក"</string>
- <string name="battery_tip_early_heads_up_done_summary" msgid="8692257022962771181">"មុខងារមួយចំនួនអាចត្រូវបានកម្រិត"</string>
+ <string name="battery_tip_early_heads_up_done_summary" msgid="8692257022962771181">"មុខងារមួយចំនួនអាចត្រូវបានដាក់កំហិត"</string>
<string name="battery_tip_high_usage_title" product="default" msgid="4103005178310487352">"ទូរសព្ទត្រូវបានប្រើប្រាស់ច្រើនជាងធម្មតា"</string>
<string name="battery_tip_high_usage_title" product="tablet" msgid="1019583260005768965">"ថេប្លេតត្រូវបានប្រើប្រាស់ច្រើនជាងធម្មតា"</string>
<string name="battery_tip_high_usage_title" product="device" msgid="8304138287288309490">"ឧបករណ៍ត្រូវបានប្រើប្រាស់ច្រើនជាងធម្មតា"</string>
@@ -3630,7 +3630,7 @@
<item quantity="one">សិទ្ធិអនុញ្ញាតបន្ថែម <xliff:g id="COUNT_0">%d</xliff:g></item>
</plurals>
<string name="runtime_permissions_summary_no_permissions_granted" msgid="3477934429220828771">"គ្មានការផ្តល់សិទ្ធិអនុញ្ញាតទេ"</string>
- <string name="runtime_permissions_summary_no_permissions_requested" msgid="3901636077467389637">"គ្មានការស្នើសិទ្ធិអនុញ្ញាតទេ"</string>
+ <string name="runtime_permissions_summary_no_permissions_requested" msgid="3901636077467389637">"គ្មានការអនុញ្ញាតដែលបានស្នើសុំទេ"</string>
<string name="filter_all_apps" msgid="4042756539846043675">"កម្មវិធីទាំងអស់"</string>
<string name="filter_enabled_apps" msgid="5888459261768538489">"កម្មវិធីដែលបានដំឡើង"</string>
<string name="filter_instant_apps" msgid="8087483282854072366">"កម្មវិធីប្រើភ្លាមៗ"</string>
diff --git a/tests/CarDeveloperOptions/res/values-kn/strings.xml b/tests/CarDeveloperOptions/res/values-kn/strings.xml
index fb2030b..353a8a4 100644
--- a/tests/CarDeveloperOptions/res/values-kn/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-kn/strings.xml
@@ -207,7 +207,7 @@
<string name="proxy_error_empty_port" msgid="8034561724923076215">"ನೀವು ಪೋರ್ಟ್ ಕ್ಷೇತ್ರವನ್ನು ಪೂರ್ಣಗೊಳಿಸುವ ಅಗತ್ಯವಿದೆ."</string>
<string name="proxy_error_empty_host_set_port" msgid="8471455809508588255">"ಹೋಸ್ಟ್ ಕ್ಷೇತ್ರವು ಖಾಲಿ ಇದ್ದಲ್ಲಿ, ಪೋರ್ಟ್ ಕ್ಷೇತ್ರವು ಕೂಡ ಖಾಲಿ ಇರಬೇಕು."</string>
<string name="proxy_error_invalid_port" msgid="4046559920586100637">"ನೀವು ಟೈಪ್ ಮಾಡಿದ ಪೋರ್ಟ್ ಮಾನ್ಯವಾಗಿಲ್ಲ."</string>
- <string name="proxy_warning_limited_support" msgid="9026539134219095768">"ಬ್ರೌಸರ್ HTTP ಪ್ರಾಕ್ಸಿ ಬಳಸಿಕೊಂಡಿದೆ. ಇತರೆ ಆಪ್ಗಳು ಬಳಸಿಕೊಳ್ಳದೆ ಇರಬಹುದು."</string>
+ <string name="proxy_warning_limited_support" msgid="9026539134219095768">"ಬ್ರೌಸರ್ HTTP ಪ್ರಾಕ್ಸಿ ಬಳಸಿಕೊಂಡಿದೆ. ಇತರೆ ಆ್ಯಪ್ಗಳು ಬಳಸಿಕೊಳ್ಳದೆ ಇರಬಹುದು."</string>
<string name="proxy_url_title" msgid="882042361706435904">"PAC URL: "</string>
<string name="radio_info_dl_kbps" msgid="2903778264453410272">"DL ಬ್ಯಾಂಡ್ವಿಡ್ತ್ (kbps):"</string>
<string name="radio_info_ul_kbps" msgid="3802245899811732716">"UL ಬ್ಯಾಂಡ್ವಿಡ್ತ್ (kbps):"</string>
@@ -908,8 +908,8 @@
<string name="wifi_hidden_network_warning" msgid="8182333050353796473">"ನಿಮ್ಮ ನೆಟ್ವರ್ಕ್ ID ಯನ್ನು ರೂಟರ್ ಪ್ರಸಾರ ಮಾಡದಿದ್ದಲ್ಲಿ ಆದರೆ ಭವಿಷ್ಯದಲ್ಲಿ ನೀವು ಅದಕ್ಕೆ ಸಂಪರ್ಕಿಸಲು ಬಯಸಿದರೆ, ನೀವು ನೆಟ್ವರ್ಕ್ ಅನ್ನು ಮರೆಮಾಡಲಾಗಿರುವುದು ಎಂದು ಹೊಂದಿಸಬಹುದು.\n\nನಿಮ್ಮ ಫೋನ್ ನಿಯಮಿತವಾಗಿ ನೆಟ್ವರ್ಕ್ ಅನ್ನು ಹುಡುಕಲು ಸಿಗ್ನಲ್ ಅನ್ನು ಪ್ರಸಾರ ಮಾಡುವುದರಿಂದ ಭದ್ರತಾ ಅಪಾಯ ಎದುರಾಗಬಹುದು.\n\nನೆಟ್ವರ್ಕ್ ಅನ್ನು ಮರೆಮಾಡಿದ ಕೂಡಲೇ ರೂಟರ್ ಸೆಟ್ಟಿಂಗ್ಗಳು ಬದಲಾಗುವುದಿಲ್ಲ."</string>
<string name="wifi_signal" msgid="696548364467704808">"ಸಿಗ್ನಲ್ ಸಾಮರ್ಥ್ಯ"</string>
<string name="wifi_status" msgid="3439931558930689940">"ಸ್ಥಿತಿ"</string>
- <string name="tx_wifi_speed" msgid="2571810085003261073">"ಲಿಂಕ್ ವೇಗವನ್ನು ಪ್ರಸಾರ ಮಾಡಿ"</string>
- <string name="rx_wifi_speed" msgid="7392873246110937187">"ಲಿಂಕ್ ವೇಗವನ್ನು ಸ್ವೀಕರಿಸಿ"</string>
+ <string name="tx_wifi_speed" msgid="2571810085003261073">"ಟ್ರಾನ್ಸ್ಮಿಟ್ ಲಿಂಕ್ ವೇಗ"</string>
+ <string name="rx_wifi_speed" msgid="7392873246110937187">"ಸ್ವೀಕರಿಸುವ ಲಿಂಕ್ ವೇಗ"</string>
<string name="wifi_frequency" msgid="6132852924995724246">"ಫ್ರೀಕ್ವೆನ್ಸಿ"</string>
<string name="wifi_ip_address" msgid="5572539114989914831">"IP ವಿಳಾಸ"</string>
<string name="passpoint_label" msgid="7429247462404128615">"ಇದರ ಮೂಲಕ ಉಳಿಸಲಾಗಿದೆ"</string>
@@ -1337,7 +1337,7 @@
<string name="status_number_sim_slot" product="tablet" msgid="4518232285651165459">"MDN (ಸಿಮ್ ಸ್ಲಾಟ್ %1$d)"</string>
<string name="status_number_sim_slot" product="default" msgid="3660851494421332328">"ಫೋನ್ ಸಂಖ್ಯೆ (ಸಿಮ್ ಸ್ಲಾಟ್ %1$d)"</string>
<string name="status_number_sim_status" product="tablet" msgid="8069693515860290952">"ಸಿಮ್ ನಲ್ಲಿ MDN"</string>
- <string name="status_number_sim_status" product="default" msgid="6602562692270457610">"ಸಿಮ್ನಲ್ಲಿ ಫೋನ್ ಸಂಖ್ಯೆ"</string>
+ <string name="status_number_sim_status" product="default" msgid="6602562692270457610">"ಸಿಮ್ನ ಫೋನ್ ಸಂಖ್ಯೆ"</string>
<string name="status_min_number" msgid="8346889546673707777">"ನಿಮಿ"</string>
<string name="status_msid_number" msgid="7808175928664357661">"MSID"</string>
<string name="status_prl_version" msgid="5634561205739199042">"PRL ಆವೃತ್ತಿ"</string>
@@ -1614,7 +1614,7 @@
<string name="tether_settings_title_wifi" msgid="2060965130234484613">"ಪೋರ್ಟಬಲ್ ಹಾಟ್ಸ್ಪಾಟ್"</string>
<string name="tether_settings_title_bluetooth" msgid="1999590158102569959">"ಬ್ಲೂಟೂತ್ ಟೆಥರಿಂಗ್"</string>
<string name="tether_settings_title_usb_bluetooth" msgid="1159128764162788159">"ಟೆಥರಿಂಗ್"</string>
- <string name="tether_settings_title_all" msgid="6935843543433954181">"ಹಾಟ್ಸ್ಪಾಟ್ ಮತ್ತು ಟೆಥರಿಂಗ್"</string>
+ <string name="tether_settings_title_all" msgid="6935843543433954181">"ಹಾಟ್ಸ್ಪಾಟ್ & ಟೆಥರಿಂಗ್"</string>
<string name="tether_settings_summary_hotspot_on_tether_on" msgid="1289593649526514499">"ಹಾಟ್ಸ್ಪಾಟ್ ಆನ್ ಆಗಿದೆ, ಟೆಥರಿಂಗ್"</string>
<string name="tether_settings_summary_hotspot_on_tether_off" msgid="8010689354668285422">"ಹಾಟ್ಸ್ಪಾಟ್ ಆನ್ ಆಗಿದೆ"</string>
<string name="tether_settings_summary_hotspot_off_tether_on" msgid="1349909238672649877">"ಟೆಥರಿಂಗ್"</string>
@@ -4473,7 +4473,7 @@
<string name="privacy_dashboard_title" msgid="8764930992456607513">"ಗೌಪ್ಯತೆ"</string>
<string name="privacy_dashboard_summary" msgid="7916431309860824945">"ಅನುಮತಿಗಳು, ಖಾತೆ ಚಟುವಟಿಕೆ, ವೈಯಕ್ತಿಕ ಡೇಟಾ"</string>
<string name="contextual_card_dismiss_remove" msgid="1750420285615827309">"ತೆಗೆದುಹಾಕಿ"</string>
- <string name="contextual_card_dismiss_keep" msgid="3204450672928193661">"ಇರಿಸಿಕೊಳ್ಳಿ"</string>
+ <string name="contextual_card_dismiss_keep" msgid="3204450672928193661">"Keep"</string>
<string name="contextual_card_dismiss_confirm_message" msgid="2352465079667730312">"ಈ ಸಲಹೆಯನ್ನು ತೆಗೆದುಹಾಕುವುದೇ?"</string>
<string name="contextual_card_removed_message" msgid="4047307820743366876">"ಸಲಹೆಯನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string>
<string name="contextual_card_undo_dismissal_text" msgid="5009245286931852012">"ರದ್ದುಗೊಳಿಸಿ"</string>
diff --git a/tests/CarDeveloperOptions/res/values-ko/arrays.xml b/tests/CarDeveloperOptions/res/values-ko/arrays.xml
index 9aa1849..75a36b3 100644
--- a/tests/CarDeveloperOptions/res/values-ko/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-ko/arrays.xml
@@ -477,7 +477,7 @@
<item msgid="1008268820118852416">"무제한 Wi-Fi로 취급"</item>
</string-array>
<string-array name="wifi_privacy_entries">
- <item msgid="6545683814310036454">"임의의 MAC 사용(기본값)"</item>
+ <item msgid="6545683814310036454">"무작위 MAC 사용(기본값)"</item>
<item msgid="214234417308375326">"기기 MAC 사용"</item>
</string-array>
<string-array name="wifi_hidden_entries">
diff --git a/tests/CarDeveloperOptions/res/values-ko/strings.xml b/tests/CarDeveloperOptions/res/values-ko/strings.xml
index 1229c60..6c3be8f 100644
--- a/tests/CarDeveloperOptions/res/values-ko/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-ko/strings.xml
@@ -766,7 +766,7 @@
<string name="bluetooth_menu_advanced" msgid="7566858513372603652">"고급"</string>
<string name="bluetooth_advanced_titlebar" msgid="6459469494039004784">"고급 블루투스"</string>
<string name="bluetooth_empty_list_bluetooth_off" msgid="6255367297830430459">"기기에서 블루투스가 켜져 있으면 주변의 다른 블루투스 기기와 통신할 수 있습니다."</string>
- <string name="bluetooth_scanning_on_info_message" msgid="5460370815156050550">"기기에서 블루투스가 켜져 있으면 주변의 다른 블루투스 기기와 통신할 수 있습니다.\n\n기기 환경을 개선하려면 블루투스가 꺼져 있을 때도 항상 앱 및 서비스에서 주변 기기를 검색할 수 있어야 합니다. 예를 들면 위치 기반 기능 및 서비스를 개선하는 데 이 설정이 사용될 수 있습니다. "<annotation id="link">"검색 설정"</annotation>"에서 관련 설정을 변경할 수 있습니다."</string>
+ <string name="bluetooth_scanning_on_info_message" msgid="5460370815156050550">"기기에서 블루투스가 켜져 있으면 주변의 다른 블루투스 기기와 통신할 수 있습니다.\n\n기기 환경을 개선하기 위해 블루투스가 꺼져 있을 때도 항상 앱 및 서비스에서 주변 기기를 검색할 수 있습니다. 예를 들면 위치 기반 기능 및 서비스를 개선하는 데 이 설정이 사용될 수 있습니다. "<annotation id="link">"검색 설정"</annotation>"에서 관련 설정을 변경할 수 있습니다."</string>
<string name="ble_scan_notify_text" msgid="6290170236546386932">"위치 정확도 개선을 위해 시스템 앱과 서비스에서 블루투스 기기를 계속 감지할 수 있습니다. <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>검색 설정<xliff:g id="LINK_END_1">LINK_END</xliff:g>에서 설정을 변경할 수 있습니다."</string>
<string name="bluetooth_connect_failed" msgid="1151234676456333786">"연결할 수 없습니다. 다시 시도해 주세요."</string>
<string name="device_details_title" msgid="726517818032923222">"기기 세부정보"</string>
@@ -938,7 +938,7 @@
<string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"\'<xliff:g id="SSID">%1$s</xliff:g>\'에 기기를 추가하려면 아래 창의 가운데 부분에 QR 코드를 맞추세요."</string>
<string name="wifi_dpp_scan_qr_code" msgid="6021600592661235546">"QR 코드 스캔"</string>
<string name="wifi_dpp_scan_qr_code_join_network" msgid="3085162928804379545">"\'<xliff:g id="SSID">%1$s</xliff:g>\'에 연결하려면 아래 창의 가운데 부분에 QR 코드를 맞추세요."</string>
- <string name="wifi_dpp_scan_qr_code_join_unknown_network" msgid="5682308317067290738">"QR 코드를 스캔하여 Wi‑Fi에 연결"</string>
+ <string name="wifi_dpp_scan_qr_code_join_unknown_network" msgid="5682308317067290738">"QR 코드를 스캔하여 Wi‑Fi에 연결하세요."</string>
<string name="wifi_dpp_share_wifi" msgid="1724161216219646284">"Wi‑Fi 공유"</string>
<string name="wifi_dpp_scan_qr_code_with_another_device" msgid="4357387474444884759">"이 QR 코드를 스캔하여 \'<xliff:g id="SSID">%1$s</xliff:g>\'에 연결하고 비밀번호를 공유하세요."</string>
<string name="wifi_dpp_scan_open_network_qr_code_with_another_device" msgid="572011882416511818">"이 QR 코드를 스캔하여 \'<xliff:g id="SSID">%1$s</xliff:g>\'에 연결"</string>
@@ -2267,7 +2267,7 @@
<string name="details_subtitle" msgid="7279638828004951382">"사용 세부정보"</string>
<string name="controls_subtitle" msgid="6920199888882834620">"전원 사용 조절"</string>
<string name="packages_subtitle" msgid="6506269487892204413">"포함된 패키지"</string>
- <string name="battery_tip_summary_title" msgid="2750922152518825526">"앱이 정상적으로 작동 중입니다."</string>
+ <string name="battery_tip_summary_title" msgid="2750922152518825526">"앱이 정상적으로 작동 중"</string>
<string name="battery_tip_summary_summary" product="default" msgid="6294900413896440006">"배터리 사용량이 평소와 같습니다."</string>
<string name="battery_tip_summary_summary" product="tablet" msgid="5280099016800644130">"태블릿의 배터리 사용량이 평소와 같습니다."</string>
<string name="battery_tip_summary_summary" product="device" msgid="4459840492610842705">"기기의 배터리 사용량이 평소와 같습니다."</string>
@@ -3762,8 +3762,8 @@
<string name="assist_access_context_summary" msgid="5867997494395842785">"지원 앱이 화면의 텍스트 콘텐츠에 액세스하도록 허용합니다."</string>
<string name="assist_access_screenshot_title" msgid="1991014038776117688">"스크린샷 사용"</string>
<string name="assist_access_screenshot_summary" msgid="3010943864000489424">"지원 앱이 화면의 이미지에 액세스하도록 허용합니다."</string>
- <string name="assist_flash_title" msgid="8852484250748551092">"플래시 화면"</string>
- <string name="assist_flash_summary" msgid="6697095786317559129">"지원 앱이 화면이나 스크린샷에서 텍스트에 액세스할 때 화면 가장자리에 플래시를 표시합니다."</string>
+ <string name="assist_flash_title" msgid="8852484250748551092">"화면 깜빡이기"</string>
+ <string name="assist_flash_summary" msgid="6697095786317559129">"지원 앱이 화면이나 스크린샷에서 텍스트에 액세스할 때 화면 가장자리가 깜빡입니다."</string>
<string name="assist_footer" msgid="7030121180457472165">"지원 앱은 화면에 표시된 정보에 맞게 도움을 줄 수 있습니다. 일부 앱은 통합된 지원을 제공하기 위해 런처와 음성 입력 서비스를 모두 지원합니다."</string>
<string name="average_memory_use" msgid="5333366040118953945">"평균 메모리 사용"</string>
<string name="maximum_memory_use" msgid="6509872438499846077">"최대 메모리 사용"</string>
@@ -4479,7 +4479,7 @@
<string name="contextual_card_undo_dismissal_text" msgid="5009245286931852012">"실행취소"</string>
<string name="low_storage_summary" msgid="4562224870189133400">"저장용량이 얼마 남지 않았습니다. <xliff:g id="PERCENTAGE">%1$s</xliff:g> 사용 중 - <xliff:g id="FREE_SPACE">%2$s</xliff:g> 사용 가능"</string>
<string name="contextual_card_feedback_send" msgid="8698649023854350623">"의견 보내기"</string>
- <string name="contextual_card_feedback_confirm_message" msgid="3987973028353264878">"이 제안에 관한 의견을 보내주세요."</string>
+ <string name="contextual_card_feedback_confirm_message" msgid="3987973028353264878">"이 추천 항목에 관한 의견을 보내주세요."</string>
<string name="copyable_slice_toast" msgid="1357518174923789947">"<xliff:g id="COPY_CONTENT">%1$s</xliff:g>이(가) 클립보드에 복사되었습니다."</string>
<string name="search_bar_account_avatar_content_description" msgid="947628881535053409"></string>
<string name="permission_bar_chart_empty_text" msgid="5893326513700540130">"권한을 사용한 앱 0개"</string>
diff --git a/tests/CarDeveloperOptions/res/values-ky/arrays.xml b/tests/CarDeveloperOptions/res/values-ky/arrays.xml
index 06849a7..248e0a2 100644
--- a/tests/CarDeveloperOptions/res/values-ky/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-ky/arrays.xml
@@ -490,7 +490,7 @@
</string-array>
<string-array name="autofill_logging_level_entries">
<item msgid="6882729786516723474">"Өчүк"</item>
- <item msgid="4072198137051566919">"Мүчүлүштүктөрдү оңдоо"</item>
+ <item msgid="4072198137051566919">"Мүчүлүштүктөрдү аныктоо"</item>
<item msgid="2473005316958868509">"Оозеки кирүү"</item>
</string-array>
<string-array name="cdma_system_select_choices">
diff --git a/tests/CarDeveloperOptions/res/values-ky/strings.xml b/tests/CarDeveloperOptions/res/values-ky/strings.xml
index bddbcef..c0928e5 100644
--- a/tests/CarDeveloperOptions/res/values-ky/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-ky/strings.xml
@@ -127,7 +127,7 @@
<string name="bluetooth_notif_title" msgid="5090288898529286011">"Жупташтыруу өтүнүчү"</string>
<string name="bluetooth_notif_message" msgid="6612367890895077938">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> менен жупташуу үчүн таптап коюңуз."</string>
<string name="bluetooth_show_received_files" msgid="5060846395852236652">"Алынган файлдар"</string>
- <string name="bluetooth_show_files_received_via_bluetooth" msgid="1699095577431389560">"Bluetooth аркылуу кабыл алынган файлдар"</string>
+ <string name="bluetooth_show_files_received_via_bluetooth" msgid="1699095577431389560">"Bluetooth аркылуу алынган файлдар"</string>
<string name="device_picker" msgid="8345264486071697705">"Bluetooth түзмөгүн тандоо"</string>
<string name="bluetooth_ask_enablement" msgid="8716802066127746062">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосу Bluetooth\'ду күйгүзгөнү жатат"</string>
<string name="bluetooth_ask_disablement" msgid="7125319551097350783">"<xliff:g id="APP_NAME">%1$s</xliff:g> бул түзмөктө Bluetooth\'ду өчүргөнү жатат"</string>
@@ -646,9 +646,9 @@
<string name="lock_last_pattern_attempt_before_wipe_profile" msgid="3877613047631174576">"Эгер графикалык ачкычты кийинки жолу туура эмес киргизсеңиз, жумуш профилиңиз жана анын дайындары өчүрүлөт"</string>
<string name="lock_last_pin_attempt_before_wipe_profile" msgid="8132438288175428168">"Эгер PIN кодду кийинки жолу туура эмес киргизсеңиз, жумуш профилиңиз жана анын дайындары өчүрүлөт"</string>
<string name="lock_last_password_attempt_before_wipe_profile" msgid="1535128774464384305">"Эгер сырсөздү кийинки жолу туура эмес киргизсеңиз, жумуш профилиңиз жана анын дайындары өчүрүлөт"</string>
- <string name="lock_failed_attempts_now_wiping_device" msgid="8662360098784762828">"Өтө көп жолу туура эмес аракет кылынды. Бул түзмөктүн дайындары өчүрүлөт."</string>
- <string name="lock_failed_attempts_now_wiping_user" msgid="3793513796171561873">"Өтө көп жолу туура эмес аракет кылынды. Бул колдонуучу өчүрүлөт."</string>
- <string name="lock_failed_attempts_now_wiping_profile" msgid="5347108525299038285">"Өтө көп жолу туура эмес аракет кылынды. Бул жумуш профили жана анын дайындары өчүрүлөт."</string>
+ <string name="lock_failed_attempts_now_wiping_device" msgid="8662360098784762828">"Өтө көп жолу жаңылдыңыз. Бул түзмөктүн дайындары өчүрүлөт."</string>
+ <string name="lock_failed_attempts_now_wiping_user" msgid="3793513796171561873">"Өтө көп жолу жаңылдыңыз. Бул колдонуучу өчүрүлөт."</string>
+ <string name="lock_failed_attempts_now_wiping_profile" msgid="5347108525299038285">"Өтө көп жолу жаңылдыңыз. Бул жумуш профили жана андагы нерселер өчүрүлөт."</string>
<string name="lock_failed_attempts_now_wiping_dialog_dismiss" msgid="3950582268749037318">"Этибарга албоо"</string>
<plurals name="lockpassword_password_too_short" formatted="false" msgid="694091983183310827">
<item quantity="other">Кеминде <xliff:g id="COUNT_1">%d</xliff:g> символ болушу керек</item>
@@ -915,7 +915,7 @@
<string name="passpoint_label" msgid="7429247462404128615">"Төмөнкү аркылуу сакталган"</string>
<string name="passpoint_content" msgid="340527524510304327">"<xliff:g id="NAME">%1$s</xliff:g> эсептик дайындары"</string>
<string name="wifi_eap_method" msgid="3752116941487485859">"EAP ыкмасы"</string>
- <string name="please_select_phase2" msgid="5848080896810435677">"Аныктыктын текшерүүнүн 2-этабы"</string>
+ <string name="please_select_phase2" msgid="5848080896810435677">"Аутентификациянын 2-этабы"</string>
<string name="wifi_eap_ca_cert" msgid="1496395241849383785">"CA тастыктамасы"</string>
<string name="wifi_eap_domain" msgid="3298302320003640130">"Домен"</string>
<string name="wifi_eap_user_cert" msgid="6786839531765719173">"Колдонуучунун тастыктамасы"</string>
@@ -1622,7 +1622,7 @@
<string name="usb_title" msgid="7480927657535578688">"USB"</string>
<string name="usb_tethering_button_text" msgid="6242228383142012332">"USB модем"</string>
<string name="usb_tethering_subtext" product="default" msgid="1573513260339548671">"Телефондун Интернетин USB аркылуу бөлүшөсүз"</string>
- <string name="usb_tethering_subtext" product="tablet" msgid="154536000235361034">"Планшеттин Интернетин USB аркылуу бөлүшүү"</string>
+ <string name="usb_tethering_subtext" product="tablet" msgid="154536000235361034">"Планшеттин Интернетин USB аркылуу бөлүшөсүз"</string>
<string name="bluetooth_tether_checkbox_text" msgid="7257293066139372774">"Bluetooth модем"</string>
<string name="bluetooth_tethering_subtext" product="tablet" msgid="6868756914621131635">"Планшеттин Интернетин Bluetooth аркылуу бөлүшүү"</string>
<string name="bluetooth_tethering_subtext" product="default" msgid="9167912297565425178">"Телефондун Интернетин Bluetooth аркылуу бөлүшөсүз"</string>
@@ -2452,7 +2452,7 @@
<string name="battery_saver_auto_routine" msgid="886514412067906980">"Кубаттоо таржымалынын негизинде"</string>
<string name="battery_saver_auto_percentage" msgid="5791982309331921556">"Кубат деңгээлинин негизинде"</string>
<string name="battery_saver_auto_routine_summary" msgid="9182044424547482889">"Кубат деңгээли кубаттала турган убакытка чейин жетпей кала турган болгондо иштетилет"</string>
- <string name="battery_saver_auto_percentage_summary" msgid="2036128588460338677">"<xliff:g id="PERCENT">%1$s</xliff:g> жеткенде, күйгүзүлөт"</string>
+ <string name="battery_saver_auto_percentage_summary" msgid="2036128588460338677">"<xliff:g id="PERCENT">%1$s</xliff:g> жеткенде автоматтык түрдө күйөт"</string>
<string name="battery_saver_schedule_settings_title" msgid="574233428557678128">"Пландаштыруу"</string>
<string name="battery_saver_sticky_title_new" msgid="5328707297110866082">"Толук кубатталганда өчүрүү"</string>
<string name="battery_saver_sticky_description_new" product="default" msgid="3406582427270935879">"Телефон <xliff:g id="PERCENT">%1$s</xliff:g> жеткенде, батареяны үнөмдөгүч өчүп калат"</string>
@@ -3871,7 +3871,7 @@
<string name="backup_disabled" msgid="6941165814784765643">"Камдык көчүрмө өчүрүлгөн"</string>
<string name="android_version_summary" msgid="2192751442789395445">"Android <xliff:g id="VERSION">%1$s</xliff:g> версиясына жаңырды"</string>
<string name="android_version_pending_update_summary" msgid="3554543810520655076">"Жаңы версия бар"</string>
- <string name="disabled_by_policy_title" msgid="1238318274952958846">"Аракетке уруксат жок"</string>
+ <string name="disabled_by_policy_title" msgid="1238318274952958846">"Аракетке тыюу салынган"</string>
<string name="disabled_by_policy_title_adjust_volume" msgid="7094547090629203316">"Үнү өзгөртүлбөйт"</string>
<string name="disabled_by_policy_title_outgoing_calls" msgid="3805836913095496278">"Чалууга тыюу салынган"</string>
<string name="disabled_by_policy_title_sms" msgid="1453236584236681105">"SMS жөнөтүүгө тыюу салынган"</string>
@@ -4002,7 +4002,7 @@
<string name="suggestion_additional_fingerprints" msgid="3434467207282466411">"Дагы бир манжа изин кошуңуз"</string>
<string name="suggestion_additional_fingerprints_summary" msgid="1916547587832484196">"Кулпуну башка манжа менен ачуу"</string>
<string name="battery_saver_on_summary" msgid="6841062406467435672">"Күйүк"</string>
- <string name="battery_saver_off_scheduled_summary" msgid="3740414764069188669">"<xliff:g id="BATTERY_PERCENTAGE">%1$s</xliff:g> жеткенде, күйгүзүлөт"</string>
+ <string name="battery_saver_off_scheduled_summary" msgid="3740414764069188669">"<xliff:g id="BATTERY_PERCENTAGE">%1$s</xliff:g> жеткенде автоматтык түрдө күйөт"</string>
<string name="battery_saver_off_summary" msgid="8736555723004299721">"Өчүк"</string>
<string name="battery_saver_button_turn_on" msgid="3748696527267573793">"Күйгүзүү"</string>
<string name="battery_saver_button_turn_off" msgid="2912950982503267828">"Өчүрүү"</string>
@@ -4176,7 +4176,7 @@
<string name="enterprise_privacy_installed_packages" msgid="4376014821459811800">"Түзмөгүңүздөгү колдонмолордун тизмеси"</string>
<string name="enterprise_privacy_usage_stats" msgid="445762931318731975">"Ар бир колдонмого сарпталган убакыт жана колдонулган дайындар"</string>
<string name="enterprise_privacy_network_logs" msgid="5427398751599441159">"Эң акыркы тармак трафигинин таржымалы"</string>
- <string name="enterprise_privacy_bug_reports" msgid="283443567328836380">"Эң акыркы мүчүлүштүк тууралуу кабар берүү"</string>
+ <string name="enterprise_privacy_bug_reports" msgid="283443567328836380">"Эң акыркы мүчүлүштүк тууралуу кабарлоо"</string>
<string name="enterprise_privacy_security_logs" msgid="8936969480449604726">"Эң акыркы коопсуздук таржымалы"</string>
<string name="enterprise_privacy_none" msgid="5990646476868794882">"Жок"</string>
<string name="enterprise_privacy_enterprise_installed_packages" msgid="6575025134782391212">"Орнотулган колдонмолор"</string>
diff --git a/tests/CarDeveloperOptions/res/values-mk/strings.xml b/tests/CarDeveloperOptions/res/values-mk/strings.xml
index 22b3095..b38ae50 100644
--- a/tests/CarDeveloperOptions/res/values-mk/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-mk/strings.xml
@@ -195,7 +195,7 @@
<string name="intent_sender_account_label" msgid="7904284551281213567">"Сметка:"</string>
<string name="proxy_settings_title" msgid="6014901859338211713">"Прокси"</string>
<string name="proxy_clear_text" msgid="498317431076294101">"Исчисти"</string>
- <string name="proxy_port_label" msgid="8285157632538848509">"Порт за прокси"</string>
+ <string name="proxy_port_label" msgid="8285157632538848509">"Порта за прокси"</string>
<string name="proxy_exclusionlist_label" msgid="8179084955547941904">"Заобиколи прокси за"</string>
<string name="proxy_defaultView_text" msgid="5785775257042403261">"Врати стандардни вредности"</string>
<string name="proxy_action_text" msgid="814511434843981413">"Готово"</string>
@@ -902,7 +902,7 @@
<string name="wifi_advanced_toggle_description_expanded" msgid="1506697245302596510">"Паѓачки список „Напредни опции“. Допрете двапати за да се собере."</string>
<string name="wifi_advanced_toggle_description_collapsed" msgid="3014965593695454879">"Паѓачки список „Напредни опции“. Допрете двапати за да се прошири."</string>
<string name="wifi_ssid" msgid="6746270925975522641">"Име на мрежа"</string>
- <string name="wifi_ssid_hint" msgid="5010024648106585165">"Внеси SSID"</string>
+ <string name="wifi_ssid_hint" msgid="5010024648106585165">"Внесете SSID"</string>
<string name="wifi_security" msgid="9136702039496152831">"Безбедност"</string>
<string name="wifi_hidden_network" msgid="6647772204699776833">"Сокриена мрежа"</string>
<string name="wifi_hidden_network_warning" msgid="8182333050353796473">"Ако вашиот рутер не емитува мрежен ID, а сакате да се поврзете со него во иднина, може да ја поставите мрежата како сокриена.\n\nОва може да создаде безбедносен ризик бидејќи вашиот телефон редовно ќе го емитува својот сигнал за да ја најде мрежата.\n\nПоставувањето на мрежата како сокриена нема да ги смени поставките на рутерот."</string>
@@ -914,7 +914,7 @@
<string name="wifi_ip_address" msgid="5572539114989914831">"IP-адреса"</string>
<string name="passpoint_label" msgid="7429247462404128615">"Зачувано преку"</string>
<string name="passpoint_content" msgid="340527524510304327">"Акредитиви на <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="wifi_eap_method" msgid="3752116941487485859">"EAP метод"</string>
+ <string name="wifi_eap_method" msgid="3752116941487485859">"EAP-метод"</string>
<string name="please_select_phase2" msgid="5848080896810435677">"Автентикација во фаза 2"</string>
<string name="wifi_eap_ca_cert" msgid="1496395241849383785">"Сертификат CA"</string>
<string name="wifi_eap_domain" msgid="3298302320003640130">"Домен"</string>
@@ -935,11 +935,11 @@
<string name="wifi_privacy_settings" msgid="4462092795794247809">"Приватност"</string>
<string name="wifi_privacy_settings_ephemeral_summary" msgid="2411375348287064283">"Рандомизирана MAC-адреса"</string>
<string name="wifi_dpp_add_device_to_network" msgid="8871041525483253430">"Додајте уред"</string>
- <string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"Наместете го QR-кодот во средината на подолниот прозорец за да го додадете уредот на „<xliff:g id="SSID">%1$s</xliff:g>“"</string>
- <string name="wifi_dpp_scan_qr_code" msgid="6021600592661235546">"Скенирај QR-код"</string>
+ <string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"Наместете го QR-кодот во средината на подолниот прозорец за да го додадете уредот во мрежата „<xliff:g id="SSID">%1$s</xliff:g>“"</string>
+ <string name="wifi_dpp_scan_qr_code" msgid="6021600592661235546">"Скенирајте QR-код"</string>
<string name="wifi_dpp_scan_qr_code_join_network" msgid="3085162928804379545">"Наместете го QR-кодот во средината на подолниот прозорец за да се поврзете со „<xliff:g id="SSID">%1$s</xliff:g>“"</string>
- <string name="wifi_dpp_scan_qr_code_join_unknown_network" msgid="5682308317067290738">"Придружете се на Wi‑Fi со скенирање на QR-кодот"</string>
- <string name="wifi_dpp_share_wifi" msgid="1724161216219646284">"Сподели Wi‑Fi"</string>
+ <string name="wifi_dpp_scan_qr_code_join_unknown_network" msgid="5682308317067290738">"Скенирајте го QR-кодот за да се поврзете на Wi‑Fi"</string>
+ <string name="wifi_dpp_share_wifi" msgid="1724161216219646284">"Споделете Wi‑Fi"</string>
<string name="wifi_dpp_scan_qr_code_with_another_device" msgid="4357387474444884759">"Скенирајте го овој QR-код за да се поврзете со „<xliff:g id="SSID">%1$s</xliff:g>“ и да ја споделите лозинката"</string>
<string name="wifi_dpp_scan_open_network_qr_code_with_another_device" msgid="572011882416511818">"Скенирајте го овој QR-код за да се поврзете со „<xliff:g id="SSID">%1$s</xliff:g>“"</string>
<string name="wifi_dpp_could_not_detect_valid_qr_code" msgid="27667719861826438">"Не можеше да се прочита QR-кодот. Центрирајте го кодот и обидете се повторно"</string>
@@ -1656,7 +1656,7 @@
</plurals>
<string name="location_category_recent_location_access" msgid="286059523360285026">"Неодамнешен пристап до локацијата"</string>
<string name="location_recent_location_access_view_details" msgid="2051602261436245905">"Прикажи ги деталите"</string>
- <string name="location_no_recent_apps" msgid="77502059586413278">"Нема апликации што скоро побарале локација"</string>
+ <string name="location_no_recent_apps" msgid="77502059586413278">"Нема апликации што неодамна побарале утврдување на локацијата"</string>
<string name="location_no_recent_accesses" msgid="6289916310397279890">"Ниедна апликација нема пристапено до локацијата неодамна"</string>
<string name="location_high_battery_use" msgid="7177199869979522663">"Голема искористеност на бат."</string>
<string name="location_low_battery_use" msgid="5030448574501435888">"Мала искористеност на бат."</string>
@@ -2110,7 +2110,7 @@
<item quantity="other"><xliff:g id="NUMBER_DEVICE_COUNT_1">%1$d</xliff:g> зачувани слушни помагала</item>
</plurals>
<string name="accessibility_summary_state_enabled" msgid="7357731696603247963">"Вклучен"</string>
- <string name="accessibility_summary_state_disabled" msgid="9197369047683087620">"Исклучен"</string>
+ <string name="accessibility_summary_state_disabled" msgid="9197369047683087620">"Исклучено"</string>
<string name="accessibility_summary_state_stopped" msgid="3170264683616172746">"Не работи. Допрете за информации."</string>
<string name="accessibility_description_state_stopped" msgid="7666178628053039493">"Услугава е дефектна."</string>
<string name="enable_quick_setting" msgid="1580451877998661255">"Прикажи во „Брзи поставки“"</string>
@@ -2240,7 +2240,7 @@
<string name="background_activity_warning_dialog_title" msgid="2170790412855899678">"Да се ограничи активноста во заднина?"</string>
<string name="background_activity_warning_dialog_text" msgid="8242749826732375096">"Апликацијата може да се однесува необично ако ја ограничите нејзината активност во заднина"</string>
<string name="background_activity_disabled_dialog_text" msgid="4234598000779459640">"Апликацијава не е оптимизирана и не може да се ограничи.\n\nЗа да ја ограничите, прво вклучете оптимизација на батеријата."</string>
- <string name="device_screen_usage" msgid="4470485475363132750">"Искористеност на екранот по целосно полнење"</string>
+ <string name="device_screen_usage" msgid="4470485475363132750">"Користење на екранот по целосно полнење"</string>
<string name="power_usage_list_summary" msgid="4314438658308211057">"Искористеност на батеријата по целосното полнење"</string>
<string name="screen_usage_summary" msgid="263396144684078341">"Време на активен екран по целосно полнење"</string>
<string name="device_usage_list_summary" msgid="8299017481332816368">"Искористеност на уредот по целосно полнење"</string>
@@ -2336,7 +2336,7 @@
<string name="battery_auto_restriction_title" msgid="488905332794794076">"Користење управник со батерија"</string>
<string name="battery_auto_restriction_summary" msgid="1638072655581821837">"Откријте кога апликациите ја трошат батеријата"</string>
<string name="battery_manager_on" msgid="5626982529932239656">"Вклучено/Се открива кога апликациите ја трошат батеријата"</string>
- <string name="battery_manager_off" msgid="9114027524232450371">"Исклучен"</string>
+ <string name="battery_manager_off" msgid="9114027524232450371">"Исклучено"</string>
<plurals name="battery_manager_app_restricted" formatted="false" msgid="6721813588142691216">
<item quantity="one">%1$d апликација е ограничена</item>
<item quantity="other">%1$d апликации се ограничени</item>
@@ -2429,7 +2429,7 @@
<string name="battery_detail_since_full_charge" msgid="3814176986148084378">"Детали по последното целосно полнење"</string>
<string name="battery_last_full_charge" msgid="5624033030647170717">"Последно целосно полнење"</string>
<string name="battery_full_charge_last" msgid="4614554109170251301">"Целосното полнење трае околу"</string>
- <string name="battery_footer_summary" msgid="4828444679643906943">"Податоците за батеријата се приближни и може да се променат според употребата"</string>
+ <string name="battery_footer_summary" msgid="4828444679643906943">"Податоците за батеријата се приближни и може да се менуваат зависно од користењето"</string>
<string name="battery_detail_foreground" msgid="6616408559186553085">"Во активна употреба"</string>
<string name="battery_detail_background" msgid="7938146832943604280">"Употреба во заднина"</string>
<string name="battery_detail_power_usage" msgid="3606930232257489212">"Искористеност на батеријата"</string>
@@ -2455,7 +2455,7 @@
<string name="battery_saver_auto_percentage_summary" msgid="2036128588460338677">"Ќе се вклучи на <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
<string name="battery_saver_schedule_settings_title" msgid="574233428557678128">"Поставете распоред"</string>
<string name="battery_saver_sticky_title_new" msgid="5328707297110866082">"Исклучи кога е целосно полна"</string>
- <string name="battery_saver_sticky_description_new" product="default" msgid="3406582427270935879">"„Штедачот на батерија“ ќе се исклучи кога нивото на батеријата на телефонот ќе биде на <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
+ <string name="battery_saver_sticky_description_new" product="default" msgid="3406582427270935879">"„Штедачот на батерија“ ќе се исклучи кога нивото на батеријата на телефонот ќе биде <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
<string name="battery_saver_sticky_description_new" product="tablet" msgid="3284967694001857194">"„Штедачот на батерија“ ќе се исклучи кога нивото на батеријата на таблетот ќе биде на <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
<string name="battery_saver_sticky_description_new" product="device" msgid="5056520668081504111">"„Штедачот на батерија“ ќе се исклучи кога нивото на батеријата на уредот ќе биде на <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
<!-- no translation found for battery_saver_seekbar_title (7607123201469333645) -->
@@ -2882,7 +2882,7 @@
<string name="user_cannot_add_accounts_message" msgid="5993561303748749097">"Ограничените профили не можат да додаваат сметки"</string>
<string name="user_remove_user_menu" msgid="3505139157217459864">"Избриши го <xliff:g id="USER_NAME">%1$s</xliff:g> од тука"</string>
<string name="user_lockscreen_settings" msgid="3820813814848394568">"Поставки на екранот за заклучување"</string>
- <string name="user_add_on_lockscreen_menu" msgid="5211604808199585774">"Додајте корисници од заклучен екран"</string>
+ <string name="user_add_on_lockscreen_menu" msgid="5211604808199585774">"Додавање корисници од заклучен екран"</string>
<string name="user_new_user_name" msgid="3880395219777884838">"Нов корисник"</string>
<string name="user_new_profile_name" msgid="3074939718101489937">"Нов профил"</string>
<string name="user_confirm_remove_self_title" msgid="6739480453680217543">"Избриши се себеси?"</string>
@@ -4004,7 +4004,7 @@
<string name="battery_saver_on_summary" msgid="6841062406467435672">"Вклучено"</string>
<string name="battery_saver_off_scheduled_summary" msgid="3740414764069188669">"Ќе се вклучи на <xliff:g id="BATTERY_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="battery_saver_off_summary" msgid="8736555723004299721">"Исклучено"</string>
- <string name="battery_saver_button_turn_on" msgid="3748696527267573793">"Вклучи го сега"</string>
+ <string name="battery_saver_button_turn_on" msgid="3748696527267573793">"Вклучи сега"</string>
<string name="battery_saver_button_turn_off" msgid="2912950982503267828">"Исклучи сега"</string>
<string name="not_battery_optimizing" msgid="2616044774307734160">"Не се користи оптимизација на батеријата"</string>
<string name="lockscreen_remote_input" msgid="3363310613165354434">"Ако уредот е заклучен, спречете внесување одговори или друг текст во известувања"</string>
@@ -4070,7 +4070,7 @@
<string name="premium_sms_none" msgid="940723020871007898">"Ниедна од инсталираните апликации не побара пристап до премиум SMS"</string>
<string name="premium_sms_warning" msgid="7604011651486294515">"Премиум SMS може да ве чини пари, а сумата ќе се додаде на сметките од операторот. Ако овозможите дозвола за апликацијата, ќе може да испраќате премиум SMS со неа."</string>
<string name="premium_sms_access" msgid="4550027460595822851">"Пристап до премиум SMS"</string>
- <string name="bluetooth_disabled" msgid="6588102116819268238">"Исклучен"</string>
+ <string name="bluetooth_disabled" msgid="6588102116819268238">"Исклучено"</string>
<string name="bluetooth_connected_summary" msgid="439920840053965217">"Поврзан со <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="bluetooth_connected_multiple_devices_summary" msgid="596205630653123250">"Поврзан со повеќе уреди"</string>
<string name="demo_mode" msgid="3831081808592541104">"Демо-режим на кориснички интерфејс на систем"</string>
@@ -4120,9 +4120,9 @@
<string name="swipe_up_to_switch_apps_summary" msgid="4644068184114154787">"За да префрлате апликации, повлечете нагоре на копчето „Почеток“. Повлечете нагоре уште еднаш за да ги видите сите апликации. Ова функционира од секој екран. Повеќе нема да имате копче „Преглед“ во долниот десен дел од екранот."</string>
<string name="swipe_up_to_switch_apps_suggestion_title" msgid="7641846365137536128">"Пробајте го новото копче за Почеток"</string>
<string name="swipe_up_to_switch_apps_suggestion_summary" msgid="7338653224520387852">"Вклучете го новото движење за да префрлате апликации"</string>
- <string name="ambient_display_title" product="default" msgid="6785677099744344088">"Допрете двапати за да го проверите телефонот"</string>
- <string name="ambient_display_title" product="tablet" msgid="1106285490888683613">"Допрете двапати за да го проверите таблетот"</string>
- <string name="ambient_display_title" product="device" msgid="5064644474876041478">"Допрете двапати за да го проверите уредот"</string>
+ <string name="ambient_display_title" product="default" msgid="6785677099744344088">"Допрете двапати за проверка на телефонот"</string>
+ <string name="ambient_display_title" product="tablet" msgid="1106285490888683613">"Допрете двапати за проверка на таблетот"</string>
+ <string name="ambient_display_title" product="device" msgid="5064644474876041478">"Допрете двапати за проверка на уредот"</string>
<string name="ambient_display_summary" msgid="4882910328216411109">"За да ги проверите времето, известувањата и другите информации, допрете двапати на екранот."</string>
<string name="ambient_display_pickup_title" product="default" msgid="7141652156907066938">"Подигнете за проверка на телефонот"</string>
<string name="ambient_display_pickup_title" product="tablet" msgid="1555456400210301959">"Подигнете за да го проверите таблетот"</string>
@@ -4265,7 +4265,7 @@
<string name="show_operator_name_title" msgid="5056163028128447308">"Име на мрежата"</string>
<string name="show_operator_name_summary" msgid="6352180285743777497">"Прикажи го името на мрежата во статусната лента"</string>
<string name="storage_manager_indicator" msgid="4255140732848476875">"„Управник со меморија“: <xliff:g id="STATUS">^1</xliff:g>"</string>
- <string name="storage_manager_indicator_off" msgid="6404056007102580777">"Исклучен"</string>
+ <string name="storage_manager_indicator_off" msgid="6404056007102580777">"Исклучено"</string>
<string name="storage_manager_indicator_on" msgid="5295306384982062320">"Вклучен"</string>
<string name="install_type_instant" msgid="6248487669862821874">"Инстант апликација"</string>
<string name="automatic_storage_manager_deactivation_warning" msgid="7867793739491286374">"Да се исклучи управникот со меморијата?"</string>
diff --git a/tests/CarDeveloperOptions/res/values-ml/strings.xml b/tests/CarDeveloperOptions/res/values-ml/strings.xml
index 36460fc..2c5fbcc 100644
--- a/tests/CarDeveloperOptions/res/values-ml/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-ml/strings.xml
@@ -207,7 +207,7 @@
<string name="proxy_error_empty_port" msgid="8034561724923076215">"നിങ്ങൾ പോർട്ട് ഫീൽഡ് പൂർത്തിയാക്കേണ്ടതുണ്ട്."</string>
<string name="proxy_error_empty_host_set_port" msgid="8471455809508588255">"ഹോസ്റ്റ് ഫീൽഡ് ശൂന്യമാണെങ്കിൽ പോർട്ട് ഫീൽഡും ശൂന്യമായിരിക്കണം."</string>
<string name="proxy_error_invalid_port" msgid="4046559920586100637">"നിങ്ങൾ ടൈപ്പുചെയ്ത പോർട്ട് സാധുവായതല്ല."</string>
- <string name="proxy_warning_limited_support" msgid="9026539134219095768">"ബ്രൗസർ HTTP പ്രോക്സി ഉപയോഗിക്കുന്നുവെങ്കിലും മറ്റ് അപ്ലിക്കേഷനുകൾ ഉപയോഗിക്കാനിടയില്ല."</string>
+ <string name="proxy_warning_limited_support" msgid="9026539134219095768">"ബ്രൗസർ HTTP പ്രോക്സി ഉപയോഗിക്കുന്നുവെങ്കിലും മറ്റ് ആപ്പുകൾ ഉപയോഗിക്കാനിടയില്ല."</string>
<string name="proxy_url_title" msgid="882042361706435904">"PAC URL: "</string>
<string name="radio_info_dl_kbps" msgid="2903778264453410272">"DL ബാന്ഡ്വിത്ത് (kbps):"</string>
<string name="radio_info_ul_kbps" msgid="3802245899811732716">"UL ബാന്ഡ്വിത്ത് (kbps):"</string>
@@ -945,7 +945,7 @@
<string name="wifi_dpp_could_not_detect_valid_qr_code" msgid="27667719861826438">"QR കോഡ് റീഡ് ചെയ്യാനായില്ല. കോഡ് വീണ്ടും മധ്യത്തിലാക്കി വീണ്ടും ശ്രമിക്കുക"</string>
<string name="wifi_dpp_failure_authentication_or_configuration" msgid="9142051662156233679">"വീണ്ടും ശ്രമിക്കുക. പ്രശ്നം തുടരുകയാണെങ്കിൽ, ഉപകരണ നിർമ്മാതാവിനെ ബന്ധപ്പെടുക"</string>
<string name="wifi_dpp_failure_not_compatible" msgid="4320027179973678283">"എന്തോ കുഴപ്പമുണ്ടായി"</string>
- <string name="wifi_dpp_failure_timeout" msgid="5060065168142109420">"ഉപകരണം പ്ലഗിൻ ചെയ്തെന്നും, ചാർജ്ജ് ചെയ്തെന്നും, ഓണാണെന്നും ഉറപ്പാക്കുക"</string>
+ <string name="wifi_dpp_failure_timeout" msgid="5060065168142109420">"ഉപകരണം പ്ലഗിൻ ചെയ്തിട്ടുണ്ടെന്നും ചാർജ്ജ് ചെയ്തിട്ടുണ്ടെന്നും ഓണാണെന്നും ഉറപ്പാക്കുക"</string>
<string name="wifi_dpp_failure_generic" msgid="7840142544736640189">"ഉപകരണം പ്ലഗിൻ ചെയ്തെന്നും, ചാർജ്ജ് ചെയ്തെന്നും, ഓണാണെന്നും ഉറപ്പാക്കുക. പ്രശ്നം തുടരുകയാണെങ്കിൽ, ഉപകരണ നിർമ്മാതാവിനെ ബന്ധപ്പെടുക"</string>
<string name="wifi_dpp_failure_not_supported" msgid="111779621766171626">"ഈ ഉപകരണം \"<xliff:g id="SSID">%1$s</xliff:g>\" ചേർക്കുന്നതിനെ പിന്തുണയ്ക്കുന്നില്ല"</string>
<string name="wifi_dpp_check_connection_try_again" msgid="7144663015219170999">"കണക്ഷൻ പരിശോധിച്ച് വീണ്ടും ശ്രമിക്കുക"</string>
@@ -3296,7 +3296,7 @@
<string name="other_sound_category_preference_title" msgid="2045757472469840859">"മറ്റ് ശബ്ദങ്ങളും വൈബ്രേഷനുകളും"</string>
<string name="configure_notification_settings" msgid="291914315140851270">"അറിയിപ്പുകൾ"</string>
<string name="recent_notifications" msgid="8125865995065032049">"അടുത്തിടെ അയച്ചവ"</string>
- <string name="recent_notifications_see_all_title" msgid="4089007770442871469">"അവസാന 7 ദിവസങ്ങളിൽ നിന്ന് എല്ലാം കാണുക"</string>
+ <string name="recent_notifications_see_all_title" msgid="4089007770442871469">"കഴിഞ്ഞ 7 ദിവസത്തെ എല്ലാം കാണുക"</string>
<string name="advanced_section_header" msgid="984680389373090015">"വിപുലമായത്"</string>
<string name="profile_section_header" msgid="5471479005472037417">"ഔദ്യോഗിക അറിയിപ്പുകൾ"</string>
<string name="asst_capability_prioritizer_title" msgid="3488284760645922160">"സ്വയമേവയുള്ള അറിയിപ്പ് മുൻഗണന നൽകൽ"</string>
diff --git a/tests/CarDeveloperOptions/res/values-mn/strings.xml b/tests/CarDeveloperOptions/res/values-mn/strings.xml
index e2a6544..b48723a 100644
--- a/tests/CarDeveloperOptions/res/values-mn/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-mn/strings.xml
@@ -207,7 +207,7 @@
<string name="proxy_error_empty_port" msgid="8034561724923076215">"Та порт талбарыг гүйцээх шаардлагатай."</string>
<string name="proxy_error_empty_host_set_port" msgid="8471455809508588255">"Хостын талбар хоосон байгаа бол портын талбар хоосон байх шаардлагатай."</string>
<string name="proxy_error_invalid_port" msgid="4046559920586100637">"Таны оруулсан порт буруу байна."</string>
- <string name="proxy_warning_limited_support" msgid="9026539134219095768">"HTTP проксиг хөтөч ашиглаж байгаа боловч бусад апп-ууд ашиглахгүй байж магадгүй."</string>
+ <string name="proxy_warning_limited_support" msgid="9026539134219095768">"HTTP проксиг хөтөч ашиглаж байгаа боловч бусад апп ашиглахгүй байж магадгүй."</string>
<string name="proxy_url_title" msgid="882042361706435904">"PAC URL: "</string>
<string name="radio_info_dl_kbps" msgid="2903778264453410272">"DL Зурвасын өргөн (kbps):"</string>
<string name="radio_info_ul_kbps" msgid="3802245899811732716">"UL Зурвасын өргөн (kbps):"</string>
@@ -1970,7 +1970,7 @@
<string name="keyboard_assistance_category" msgid="2276351807419818125">"Гарын тусламж"</string>
<string name="physical_keyboard_title" msgid="3508591962962814313">"Бодит гар"</string>
<string name="show_ime" msgid="7322620473198763563">"Виртуал гарыг харуулах"</string>
- <string name="show_ime_summary" msgid="3246628154011464373">"Бодит гар идэвхтэй үед үүнийг дэлгэцэд харуулна уу"</string>
+ <string name="show_ime_summary" msgid="3246628154011464373">"Биет гар идэвхтэй үед үүнийг дэлгэцэд харуулна уу"</string>
<string name="keyboard_shortcuts_helper" msgid="6574386807271399788">"Гарын товчлолын туслагч"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="8024313306403779742">"Боломжтой товчлолыг харуулах"</string>
<string name="language_and_input_for_work_category_title" msgid="2053255944038892588">"Ажлын профайлын гар & хэрэгсэл"</string>
@@ -2100,7 +2100,7 @@
<string name="accessibility_caption_master_switch_title" msgid="6373335123229234053">"Тайлбар ашиглах"</string>
<string name="accessibility_hearingaid_instruction_continue_button" msgid="4650111296711466691">"Үргэлжлүүлэх"</string>
<string name="accessibility_hearingaid_title" msgid="3700978781235124891">"Сонсголын төхөөрөмжүүд"</string>
- <string name="accessibility_hearingaid_not_connected_summary" msgid="634573930469952213">"Холбогдсон сонсголын төхөөрөмжүүд алга"</string>
+ <string name="accessibility_hearingaid_not_connected_summary" msgid="634573930469952213">"Холбогдсон сонсголын төхөөрөмж алга"</string>
<string name="accessibility_hearingaid_adding_summary" msgid="4139031880828714300">"Сонсголын төхөөрөмж нэмэх"</string>
<string name="accessibility_hearingaid_pair_instructions_first_message" msgid="2671518890909750740">"Сонсголын төхөөрөмжүүдээ холбохын тулд төхөөрөмжөө дараагийн дэлгэцээс олж товшино уу."</string>
<string name="accessibility_hearingaid_pair_instructions_second_message" msgid="1584538735488464991">"Таны сонсголын төхөөрөмжүүд холболтын горимд байгаа эсэхийг шалгана уу."</string>
@@ -3710,10 +3710,10 @@
<string name="high_power_system" msgid="739584574711292753">"Батарейн оновчлолыг ашиглах боломжгүй байна"</string>
<string name="high_power_desc" msgid="333756885680362741">"Тэжээлийн оновчлол ашиглах шаардлагагүй. Учир нь тэжээлийг илүү түргэн дуусгаж болох юм."</string>
<string name="high_power_prompt_title" msgid="2805745781720454052">"Аппыг цаана тогтмол ажиллуулахыг зөвшөөрөх үү?"</string>
- <string name="high_power_prompt_body" msgid="8067395096053552289">"<xliff:g id="APP_NAME">%1$s</xliff:g>-г цаана ажиллуулахаар зөвшөөрсөн тохиолдолд батерейны түвшинг багасгах болно. \n\nТа үүнийг дараа нь Тохиргоо, Апп, мэдэгдэл хэсэгт өөрчлөх боломжтой."</string>
+ <string name="high_power_prompt_body" msgid="8067395096053552289">"<xliff:g id="APP_NAME">%1$s</xliff:g>-г байнга цаана ажиллуулахаар зөвшөөрсөн тохиолдолд батарейны түвшинг багасгах болно. \n\nТа үүнийг дараа нь Тохиргоо, Апп, мэдэгдэл хэсэгт өөрчлөх боломжтой."</string>
<string name="battery_summary" msgid="4345690800899981339">"Сүүлд бүрэн цэнэглэснээс хойш <xliff:g id="PERCENTAGE">%1$s</xliff:g>-г ашигласан"</string>
<string name="battery_power_management" msgid="2853925857548647969">"Цэнэгний менежмент"</string>
- <string name="no_battery_summary" msgid="4105932628367471314">"Сүүлийн бүрэн цэнэглэлтээс хойш тэжээл огт ашиглаагүй"</string>
+ <string name="no_battery_summary" msgid="4105932628367471314">"Сүүлийн бүрэн цэнэглэлтээс хойш батарей огт ашиглаагүй"</string>
<string name="app_notification_preferences" msgid="5154466638524523201">"Апп-ийн тохиргоо"</string>
<string name="system_ui_settings" msgid="6751165163665775447">"SystemUI Tuner харуулах"</string>
<string name="additional_permissions" msgid="3142290772324571654">"Нэмэлт зөвшөөрөл"</string>
@@ -4472,7 +4472,7 @@
<string name="privacy_dashboard_summary" msgid="7916431309860824945">"Зөвшөөрөл, бүртгэлийн үйл ажиллагаа, хувийн өгөгдөл"</string>
<string name="contextual_card_dismiss_remove" msgid="1750420285615827309">"Хасах"</string>
<string name="contextual_card_dismiss_keep" msgid="3204450672928193661">"Хадгалах"</string>
- <string name="contextual_card_dismiss_confirm_message" msgid="2352465079667730312">"Энэ саналыг устгах уу?"</string>
+ <string name="contextual_card_dismiss_confirm_message" msgid="2352465079667730312">"Энэ саналыг хасах уу?"</string>
<string name="contextual_card_removed_message" msgid="4047307820743366876">"Зөвлөмжийг устгасан"</string>
<string name="contextual_card_undo_dismissal_text" msgid="5009245286931852012">"Болих"</string>
<string name="low_storage_summary" msgid="4562224870189133400">"Хадгалах сангийн багтаамж бага байна. <xliff:g id="PERCENTAGE">%1$s</xliff:g>-г ашигласан - <xliff:g id="FREE_SPACE">%2$s</xliff:g> сул"</string>
diff --git a/tests/CarDeveloperOptions/res/values-mr/arrays.xml b/tests/CarDeveloperOptions/res/values-mr/arrays.xml
index 305dd2b..55fda50 100644
--- a/tests/CarDeveloperOptions/res/values-mr/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-mr/arrays.xml
@@ -281,7 +281,7 @@
<item msgid="2633626056029384366">"बनावट स्थान"</item>
<item msgid="8356842191824684631">"वाचण्याचा स्टोरेज"</item>
<item msgid="5671906070163291500">"लिहिण्याचा स्टोरेज"</item>
- <item msgid="2791955098549340418">"स्क्रीन चालू करा"</item>
+ <item msgid="2791955098549340418">"स्क्रीन सुरू करा"</item>
<item msgid="5599435119609178367">"खाती मिळवा"</item>
<item msgid="1165623660533024666">"पार्श्वभूमीमध्ये चालवा"</item>
<item msgid="6423861043647911030">"प्रवेशयोग्यता आकारमान"</item>
@@ -348,7 +348,7 @@
<item msgid="7134693570516523585">"बनावट स्थान"</item>
<item msgid="7224489175375229399">"वाचण्याचा स्टोरेज"</item>
<item msgid="8472735063903258202">"लिहिण्याचा स्टोरेज"</item>
- <item msgid="4069276819909595110">"स्क्रीन चालू करा"</item>
+ <item msgid="4069276819909595110">"स्क्रीन सुरू करा"</item>
<item msgid="1228338896751121025">"खाती मिळवा"</item>
<item msgid="3181581793459233672">"पार्श्वभूमीमध्ये चालवा"</item>
<item msgid="2340936043025374076">"प्रवेशयोग्यता आकारमान"</item>
diff --git a/tests/CarDeveloperOptions/res/values-mr/strings.xml b/tests/CarDeveloperOptions/res/values-mr/strings.xml
index d356b76..96c3e9d 100644
--- a/tests/CarDeveloperOptions/res/values-mr/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-mr/strings.xml
@@ -38,7 +38,7 @@
<string name="wfc_provisioned_switch_string" msgid="5446697646596639516">"वायफाय कॉलिंगची तरतूद केली"</string>
<string name="eab_provisioned_switch_string" msgid="3921103790584572430">"EAB/उपस्थितीची तरतूद आहे"</string>
<string name="cbrs_data_switch_string" msgid="9120919504831536183">"Cbrs डेटा"</string>
- <string name="dsds_switch_string" msgid="2606482598327613264">"DSDS सुरु करा"</string>
+ <string name="dsds_switch_string" msgid="2606482598327613264">"DSDS सुरू करा"</string>
<string name="dsds_dialog_title" msgid="3279829304547130217">"डिव्हाइस रीस्टार्ट करायचे का?"</string>
<string name="dsds_dialog_message" msgid="571197076181853304">"ही सेटिंग बदलण्यासाठी तुम्ही तुमचे डिव्हाइस रीस्टार्ट करणे आवश्यक आहे."</string>
<string name="dsds_dialog_confirm" msgid="4858826679303698086">"रीस्टार्ट"</string>
@@ -123,15 +123,15 @@
<string name="bluetooth_device" msgid="3170974107364990008">"नाव नसलेले ब्लूटूथ डिव्हाइस"</string>
<string name="progress_scanning" msgid="633923400401041181">"शोधत आहे"</string>
<string name="bluetooth_no_devices_found" msgid="4396050022213494322">"जवळपास ब्लूटूथ डिव्हाइस आढळली नाहीत."</string>
- <string name="bluetooth_notif_ticker" msgid="8398481099943141819">"ब्लूटूथ पेअरींग विनंती"</string>
- <string name="bluetooth_notif_title" msgid="5090288898529286011">"पेअरींग विनंती"</string>
+ <string name="bluetooth_notif_ticker" msgid="8398481099943141819">"ब्लूटूथ पेअरिंग विनंती"</string>
+ <string name="bluetooth_notif_title" msgid="5090288898529286011">"पेअरिंग विनंती"</string>
<string name="bluetooth_notif_message" msgid="6612367890895077938">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> सह जोडण्यासाठी टॅप करा."</string>
<string name="bluetooth_show_received_files" msgid="5060846395852236652">"मिळालेल्या फायली"</string>
<string name="bluetooth_show_files_received_via_bluetooth" msgid="1699095577431389560">"फायली ब्लूटूथद्वारे मिळाल्या आहेत"</string>
<string name="device_picker" msgid="8345264486071697705">"ब्लूटूथ डिव्हाइस निवडा"</string>
- <string name="bluetooth_ask_enablement" msgid="8716802066127746062">"<xliff:g id="APP_NAME">%1$s</xliff:g> ब्लूटूथ चालू करू इच्छितो"</string>
+ <string name="bluetooth_ask_enablement" msgid="8716802066127746062">"<xliff:g id="APP_NAME">%1$s</xliff:g> ब्लूटूथ सुरू करू इच्छितो"</string>
<string name="bluetooth_ask_disablement" msgid="7125319551097350783">"<xliff:g id="APP_NAME">%1$s</xliff:g> ब्लूटूथ बंद करू इच्छितो"</string>
- <string name="bluetooth_ask_enablement_no_name" msgid="6105893027185475233">"अॅप ब्लूटूथ चालू करु इच्छित आहे"</string>
+ <string name="bluetooth_ask_enablement_no_name" msgid="6105893027185475233">"अॅप ब्लूटूथ सुरू करु इच्छित आहे"</string>
<string name="bluetooth_ask_disablement_no_name" msgid="8648888502291681310">"अॅप ब्लूटूथ बंद करू इच्छितो"</string>
<string name="bluetooth_ask_discovery" product="tablet" msgid="6871595755186170115">"<xliff:g id="APP_NAME">%1$s</xliff:g> तुमचा टॅबलेट अन्य ब्लूटूथ डीव्हाइससाठी <xliff:g id="TIMEOUT">%2$d</xliff:g> सेकंदांसाठी दृश्यमान करू इच्छितो."</string>
<string name="bluetooth_ask_discovery" product="default" msgid="3388041479101348095">"<xliff:g id="APP_NAME">%1$s</xliff:g> तुमचा फोन अन्य ब्लूटूथ डीव्हाइससाठी <xliff:g id="TIMEOUT">%2$d</xliff:g> सेकंदांसाठी दृश्यमान करू इच्छितो."</string>
@@ -141,15 +141,15 @@
<string name="bluetooth_ask_lasting_discovery" product="default" msgid="7796723473397303412">"<xliff:g id="APP_NAME">%1$s</xliff:g> तुमचा फोन इतर ब्लूटूथ डीव्हाइससाठी दृश्यमान करू इच्छित आहे. तुम्ही ब्लूटूथ सेटिंग्जमध्ये नंतर हे बदलू शकता."</string>
<string name="bluetooth_ask_lasting_discovery_no_name" product="tablet" msgid="5961921359655434504">"अॅप तुमचा टॅबलेट इतर ब्लूटूथ डीव्हाइससाठी दृश्यमान करू इच्छित आहे. तुम्ही ब्लूटूथ सेटिंग्जमध्ये नंतर हे बदलू शकता."</string>
<string name="bluetooth_ask_lasting_discovery_no_name" product="default" msgid="3585910858758443872">"अॅप तुमचा फोन इतर ब्लूटूथ डीव्हाइससाठी दृश्यमान करू इच्छित आहे. तुम्ही ब्लूटूथ सेटिंग्जमध्ये नंतर हे बदलू शकता."</string>
- <string name="bluetooth_ask_enablement_and_discovery" product="tablet" msgid="5676466923424941153">"<xliff:g id="APP_NAME">%1$s</xliff:g> ब्लूटूथ चालू करू इच्छितो आणि <xliff:g id="TIMEOUT">%2$d</xliff:g> सेकंदांसाठी तुमचा टॅबलेट अन्य डीव्हाइससाठी दृश्यमान करू इच्छितो."</string>
- <string name="bluetooth_ask_enablement_and_discovery" product="default" msgid="507088376226791063">"<xliff:g id="APP_NAME">%1$s</xliff:g> ब्लूटूथ चालू करू इच्छितो आणि <xliff:g id="TIMEOUT">%2$d</xliff:g> सेकंदांसाठी तुमचा फोन अन्य डीव्हाइससाठी दृश्यमान करू इच्छितो."</string>
- <string name="bluetooth_ask_enablement_and_discovery_no_name" product="tablet" msgid="1164681893121736219">"अॅप ब्लूटूथ चालू करु इच्छित आहे आणि इतर डीव्हाइससाठी <xliff:g id="TIMEOUT">%1$d</xliff:g> सेकंदांकरिता तुमचा टॅबलेट दृश्यमान बनवू इच्छित आहे."</string>
- <string name="bluetooth_ask_enablement_and_discovery_no_name" product="default" msgid="2542247690119921188">"अॅप ब्लूटूथ चालू करु इच्छित आहे आणि इतर डीव्हाइससाठी <xliff:g id="TIMEOUT">%1$d</xliff:g> सेकंदांकरिता तुमचा फोन दृश्यमान बनवू इच्छित आहे."</string>
- <string name="bluetooth_ask_enablement_and_lasting_discovery" product="tablet" msgid="7118362102769177771">"<xliff:g id="APP_NAME">%1$s</xliff:g> ब्लूटूथ चालू करु इच्छित आहे आणि तुमचा टॅबलेट इतर डीव्हाइससाठी दृश्यमान करू इच्छित आहे. तुम्ही ब्लूटूथ सेटिंग्जमध्ये नंतर हे बदलू शकता."</string>
- <string name="bluetooth_ask_enablement_and_lasting_discovery" product="default" msgid="2577488464813970727">"<xliff:g id="APP_NAME">%1$s</xliff:g> अॅप ब्लूटूथ चालू करु इच्छित आहे आणि तुमचा फोन इतर डीव्हाइससाठी दृश्यमान करू इच्छित आहे. तुम्ही ब्लूटूथ सेटिंग्जमध्ये नंतर हे बदलू शकता."</string>
- <string name="bluetooth_ask_enablement_and_lasting_discovery_no_name" product="tablet" msgid="7083038132794842691">"अॅप ब्लूटूथ चालू करु इच्छित आहे आणि तुमचा टॅबलेट इतर डीव्हाइससाठी दृश्यमान करू इच्छित आहे. तुम्ही ब्लूटूथ सेटिंग्जमध्ये नंतर हे बदलू शकता."</string>
- <string name="bluetooth_ask_enablement_and_lasting_discovery_no_name" product="default" msgid="3541668604020109525">"अॅप ब्लूटूथ चालू करु इच्छित आहे आणि तुमचा फोन इतर डीव्हाइससाठी दृश्यमान करू इच्छित आहे. तुम्ही ब्लूटूथ सेटिंग्जमध्ये नंतर हे बदलू शकता."</string>
- <string name="bluetooth_turning_on" msgid="6935183036449748493">"ब्लूटूथ चालू करत आहे…"</string>
+ <string name="bluetooth_ask_enablement_and_discovery" product="tablet" msgid="5676466923424941153">"<xliff:g id="APP_NAME">%1$s</xliff:g> ब्लूटूथ सुरू करू इच्छितो आणि <xliff:g id="TIMEOUT">%2$d</xliff:g> सेकंदांसाठी तुमचा टॅबलेट अन्य डीव्हाइससाठी दृश्यमान करू इच्छितो."</string>
+ <string name="bluetooth_ask_enablement_and_discovery" product="default" msgid="507088376226791063">"<xliff:g id="APP_NAME">%1$s</xliff:g> ब्लूटूथ सुरू करू इच्छितो आणि <xliff:g id="TIMEOUT">%2$d</xliff:g> सेकंदांसाठी तुमचा फोन अन्य डीव्हाइससाठी दृश्यमान करू इच्छितो."</string>
+ <string name="bluetooth_ask_enablement_and_discovery_no_name" product="tablet" msgid="1164681893121736219">"अॅप ब्लूटूथ सुरू करु इच्छित आहे आणि इतर डीव्हाइससाठी <xliff:g id="TIMEOUT">%1$d</xliff:g> सेकंदांकरिता तुमचा टॅबलेट दृश्यमान बनवू इच्छित आहे."</string>
+ <string name="bluetooth_ask_enablement_and_discovery_no_name" product="default" msgid="2542247690119921188">"अॅप ब्लूटूथ सुरू करु इच्छित आहे आणि इतर डीव्हाइससाठी <xliff:g id="TIMEOUT">%1$d</xliff:g> सेकंदांकरिता तुमचा फोन दृश्यमान बनवू इच्छित आहे."</string>
+ <string name="bluetooth_ask_enablement_and_lasting_discovery" product="tablet" msgid="7118362102769177771">"<xliff:g id="APP_NAME">%1$s</xliff:g> ब्लूटूथ सुरू करु इच्छित आहे आणि तुमचा टॅबलेट इतर डीव्हाइससाठी दृश्यमान करू इच्छित आहे. तुम्ही ब्लूटूथ सेटिंग्जमध्ये नंतर हे बदलू शकता."</string>
+ <string name="bluetooth_ask_enablement_and_lasting_discovery" product="default" msgid="2577488464813970727">"<xliff:g id="APP_NAME">%1$s</xliff:g> अॅप ब्लूटूथ सुरू करु इच्छित आहे आणि तुमचा फोन इतर डीव्हाइससाठी दृश्यमान करू इच्छित आहे. तुम्ही ब्लूटूथ सेटिंग्जमध्ये नंतर हे बदलू शकता."</string>
+ <string name="bluetooth_ask_enablement_and_lasting_discovery_no_name" product="tablet" msgid="7083038132794842691">"अॅप ब्लूटूथ सुरू करु इच्छित आहे आणि तुमचा टॅबलेट इतर डीव्हाइससाठी दृश्यमान करू इच्छित आहे. तुम्ही ब्लूटूथ सेटिंग्जमध्ये नंतर हे बदलू शकता."</string>
+ <string name="bluetooth_ask_enablement_and_lasting_discovery_no_name" product="default" msgid="3541668604020109525">"अॅप ब्लूटूथ सुरू करु इच्छित आहे आणि तुमचा फोन इतर डीव्हाइससाठी दृश्यमान करू इच्छित आहे. तुम्ही ब्लूटूथ सेटिंग्जमध्ये नंतर हे बदलू शकता."</string>
+ <string name="bluetooth_turning_on" msgid="6935183036449748493">"ब्लूटूथ सुरू करत आहे…"</string>
<string name="bluetooth_turning_off" msgid="9214026723789756620">"ब्लूटूथ बंद करत आहे…"</string>
<string name="bluetooth_connection_permission_request" msgid="2382506002340643398">"ब्लूटूथ कनेक्शन विनंती"</string>
<string name="bluetooth_connection_notif_message" msgid="6824654400460127108">"\"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\" शी कनेक्ट करण्यासाठी टॅप करा."</string>
@@ -163,7 +163,7 @@
<string name="bluetooth_sap_request" msgid="6318039677671263261">"सिम प्रवेश विनंती"</string>
<string name="bluetooth_sap_acceptance_dialog_text" msgid="1909352413109340355">"<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g> आपल्या सिम कार्डवर प्रवेश करू इच्छित आहे. सिम कार्डवर प्रवेश मंजूर केल्यामुळे कनेक्शनच्या कालावधीसाठी आपल्या डिव्हाइसवरील डेटा कनेक्टिव्हिटी अक्षम होईल. <xliff:g id="DEVICE_NAME_1">%2$s?</xliff:g> वर प्रवेश द्या"</string>
<string name="bluetooth_device_name_summary" msgid="8661066392056595005">"इतर डिव्हाइसना \'<xliff:g id="DEVICE_NAME">^1</xliff:g>\' म्हणून दिसत आहे"</string>
- <string name="bluetooth_off_footer" msgid="7658444560543730571">"इतर डिव्हाइसशी कनेक्ट करण्यासाठी ब्लूटूथ चालू करा."</string>
+ <string name="bluetooth_off_footer" msgid="7658444560543730571">"इतर डिव्हाइसशी कनेक्ट करण्यासाठी ब्लूटूथ सुरू करा."</string>
<string name="bluetooth_paired_device_title" msgid="8361860197780425286">"तुमचे डिव्हाइस"</string>
<string name="bluetooth_pairing_page_title" msgid="9053463656712597709">"नवीन डिव्हाइस जोडा"</string>
<string name="bluetooth_pref_summary" product="tablet" msgid="3601662966604648212">"तुमच्या टॅबलेटला जवळपासच्या ब्लूटूथ डिव्हाइसशी संवाद साधण्याची अनुमती द्या"</string>
@@ -312,7 +312,7 @@
<string name="roaming_enable" msgid="2108142024297441116">"रोमिंग असताना डेटा सेवांवर कनेक्ट करा"</string>
<string name="roaming_disable" msgid="1915440242079953809">"रोमिंगमध्ये असताना डेटा सेवांना कनेक्ट करा"</string>
<string name="roaming_reenable_message" msgid="8388505868655113258">"तुम्ही डेटा रोमिंग बंद करून तुमचे होम नेटवर्क सोडल्यामुळे तुम्ही डेटा कनेक्टिव्हिटी गमावली आहे."</string>
- <string name="roaming_turn_it_on_button" msgid="4370846458830537578">"हे चालू करा"</string>
+ <string name="roaming_turn_it_on_button" msgid="4370846458830537578">"हे सुरू करा"</string>
<string name="roaming_warning" msgid="5488050911277592868">"तुम्हाला बर्याच प्रमाणात शुल्क लागू शकते."</string>
<string name="roaming_warning_multiuser" product="tablet" msgid="7090388691615686893">"जेव्हा तुम्ही डेटा रोमिंगला अनुमती देता, तेव्हा तुम्हाला महत्त्वाचे रोमिंग शुल्क आकारले जाऊ शकते!\n\nही सेटिंग या टॅब्लेटवरील सर्व वापरकर्ते प्रभावित करते."</string>
<string name="roaming_warning_multiuser" product="default" msgid="6999819541078827556">"जेव्हा तुम्ही डेटा रोमिंगला अनुमती देता, तेव्हा आपल्याकडून महत्त्वाचे रोमिंग शुल्क आकारले जाऊ शकते!\n\nही सेटिंग या फोनवरील सर्व वापरकर्ते प्रभावित करते."</string>
@@ -443,13 +443,13 @@
<string name="security_settings_fingerprint_enroll_introduction_message_unlock_disabled" msgid="1640839304679275468">"फोन अनलॉक करण्यासाठी किंवा खरेदींना मंजूरी देण्यासाठी तुमचे फिंगरप्रिंट वापरा.\n\nटीप: तुम्ही हे डिव्हाइस अनलॉक करण्यासाठी तुम्ही तुमचे फिंगरप्रिंट वापरू शकत नाही. अधिक माहितीसाठी संस्थेच्या प्रशासकाशी संपर्क साधा."</string>
<string name="security_settings_fingerprint_enroll_introduction_message_setup" msgid="6734490666593320711">"फोन अनलॉक करण्यासाठी किंवा खरेदीला मंजुरी देण्यासाठी तुमची फिंगरप्रिंट वापरा.\n\nटीप: क्लिष्ट पॅटर्न किंवा पिनच्या तुलनेत तुमची फिंगरप्रिंट ही कमी सुरक्षित असू शकते."</string>
<string name="security_settings_fingerprint_enroll_introduction_cancel" msgid="9168637333731599827">"रद्द करा"</string>
- <string name="security_settings_fingerprint_enroll_introduction_continue" msgid="271662150372486535">"सुरु ठेवा"</string>
+ <string name="security_settings_fingerprint_enroll_introduction_continue" msgid="271662150372486535">"सुरू ठेवा"</string>
<string name="security_settings_fingerprint_enroll_introduction_cancel_setup" msgid="756928427429893070">"वगळा"</string>
<string name="security_settings_fingerprint_enroll_introduction_continue_setup" msgid="4125977169169671144">"पुढील"</string>
<string name="setup_fingerprint_enroll_skip_title" msgid="763018850721691594">"फिंगरप्रिंट पायरी वगळायची?"</string>
<string name="setup_fingerprint_enroll_skip_after_adding_lock_text" msgid="8849928362049018680">"फिंगरप्रिंट सेटअपला फक्त एक किंवा दोन मिनिटे लागतात. ही पायरी वगळली तरी तुम्ही नंतर सेटिंग्जमध्ये जाऊन तुमची फिंगरप्रिंट जोडू शकता."</string>
<string name="lock_screen_intro_skip_title" msgid="5307431665496346914">"स्क्रीन लॉक वगळायचे?"</string>
- <string name="lock_screen_intro_skip_dialog_text_frp" product="tablet" msgid="7553945981266845264">"डिव्हाइस संरक्षण वैशिष्ट्ये चालू होणार नाहीत. हा टॅब्लेट हरवल्यास, चोरी झाल्यास किंवा रीसेट केल्यास तुम्ही इतरांना तो वापरण्यापासून रोखू शकणार नाही."</string>
+ <string name="lock_screen_intro_skip_dialog_text_frp" product="tablet" msgid="7553945981266845264">"डिव्हाइस संरक्षण वैशिष्ट्ये सुरू होणार नाहीत. हा टॅब्लेट हरवल्यास, चोरी झाल्यास किंवा रीसेट केल्यास तुम्ही इतरांना तो वापरण्यापासून रोखू शकणार नाही."</string>
<string name="lock_screen_intro_skip_dialog_text_frp" product="device" msgid="1378243257238015603">"डिव्हाइस संरक्षण वैशिष्ट्ये सुरू होणार नाहीत. हे डिव्हाइस हरवल्यास, चोरी झाल्यास किंवा रीसेट केल्यास तुम्ही इतरांना तो वापरण्यापासून रोखू शकणार नाही."</string>
<string name="lock_screen_intro_skip_dialog_text_frp" product="default" msgid="8395540117461339748">"डिव्हाइस संरक्षण वैशिष्ट्ये सुरू होणार नाहीत. हा फोन हरवल्यास, चोरी झाल्यास किंवा रीसेट केल्यास तुम्ही इतरांना तो वापरण्यापासून रोखू शकणार नाही."</string>
<string name="lock_screen_intro_skip_dialog_text" product="tablet" msgid="7572334562915795226">"डिव्हाइस संरक्षण वैशिष्ट्ये सुरू होणार नाहीत. हा टॅब्लेट हरवल्यास किंवा चोरी झाल्यास तुम्ही इतरांना तो वापरण्यापासून रोखू शकणार नाही."</string>
@@ -508,14 +508,14 @@
<string name="crypt_keeper_encrypt_title" product="tablet" msgid="2292129135369853167">"टॅबलेट एंक्रिप्ट करा"</string>
<string name="crypt_keeper_encrypt_title" product="default" msgid="3110852053238357832">"फोन एंक्रिप्ट करा"</string>
<string name="crypt_keeper_encrypted_summary" msgid="2438498691741626642">"एंक्रिप्ट केले"</string>
- <string name="crypt_keeper_desc" product="tablet" msgid="9142792050252407734">"तुम्ही तुमची खाती, सेटिंग्ज, डाउनलोड केलेले अॅप्स आणि त्यांचा डेटा, मीडिया आणि इतर फायली एंक्रिप्ट करू शकता. तुम्ही तुमचा टॅब्लेट एंक्रिप्ट केल्यानंतर, तुम्ही स्क्रीन लॉक (म्हणजे, एक पॅटर्न किंवा अंकीय पिन किंवा पासवर्ड) सेट केला आहे हे गृहित धरून, प्रत्येकवेळी तुम्ही टॅब्लेट चालू करता तेव्हा त्याचे एंक्रिप्ट करण्यासाठी आपल्याला स्क्रीन अनलॉक करण्याची आवश्यकता असेल. एंक्रिप्ट करण्याचा अन्य एकमेव मार्ग तुमचा सर्व डेटा मिटवून, फॅक्टरी डेटा रीसेट करणे हा होय.\n\nएंक्रिप्शनला एक तास किंवा अधिक वेळ लागू शकतो. तुम्ही संपूर्ण प्रक्रियेत चार्ज केलेल्या बॅटरीसह प्रारंभ करणे आणि तुमचा टॅब्लेट प्लग इन केलेला ठेवणे आवश्यक आहे. तुम्ही त्यात व्यत्यय आणल्यास, तुम्ही तुमचा काही किंवा सर्व डेटा गमवाल."</string>
- <string name="crypt_keeper_desc" product="default" msgid="1996334685607444282">"तुम्ही तुमची खाती, सेटिंग्ज, डाउनलोड केलेली अॅप्स आणि त्यांचा डेटा, मीडिया आणि इतर फायली एंक्रिप्ट करू शकता. तुम्ही तुमचा फोन एंक्रिप्ट केल्यानंतर, तुम्ही स्क्रीन लॉक (म्हणजे, एक पॅटर्न किंवा अंकीय पिन किंवा पासवर्ड) सेट केला आहे हे गृहित धरून, प्रत्येकवेळी तुम्ही फोन चालू करता तेव्हा त्याचे एंक्रिप्ट करण्यासाठी आपल्याला स्क्रीन अनलॉक करण्याची आवश्यकता असेल. एंक्रिप्ट करण्याचा अन्य एकमेव मार्ग तुमचा सर्व डेटा मिटवून, फॅक्टरी डेटा रीसेट करणे हा होय.\n\nएंक्रिप्टीकरणास एक तास किंवा अधिक वेळ लागू शकतो. तुम्ही संपूर्ण प्रक्रियेत चार्ज केलेल्या बॅटरीसह प्रारंभ करणे आणि तुमचा फोन प्लग इन केलेला ठेवणे आवश्यक आहे. तुम्ही त्यात व्यत्यय आणल्यास, तुम्ही तुमचा काही किंवा सर्व डेटा गमवाल."</string>
+ <string name="crypt_keeper_desc" product="tablet" msgid="9142792050252407734">"तुम्ही तुमची खाती, सेटिंग्ज, डाउनलोड केलेले अॅप्स आणि त्यांचा डेटा, मीडिया आणि इतर फायली एंक्रिप्ट करू शकता. तुम्ही तुमचा टॅब्लेट एंक्रिप्ट केल्यानंतर, तुम्ही स्क्रीन लॉक (म्हणजे, एक पॅटर्न किंवा अंकीय पिन किंवा पासवर्ड) सेट केला आहे हे गृहित धरून, प्रत्येकवेळी तुम्ही टॅब्लेट सुरू करता तेव्हा त्याचे एंक्रिप्ट करण्यासाठी आपल्याला स्क्रीन अनलॉक करण्याची आवश्यकता असेल. एंक्रिप्ट करण्याचा अन्य एकमेव मार्ग तुमचा सर्व डेटा मिटवून, फॅक्टरी डेटा रीसेट करणे हा होय.\n\nएंक्रिप्शनला एक तास किंवा अधिक वेळ लागू शकतो. तुम्ही संपूर्ण प्रक्रियेत चार्ज केलेल्या बॅटरीसह प्रारंभ करणे आणि तुमचा टॅब्लेट प्लग इन केलेला ठेवणे आवश्यक आहे. तुम्ही त्यात व्यत्यय आणल्यास, तुम्ही तुमचा काही किंवा सर्व डेटा गमवाल."</string>
+ <string name="crypt_keeper_desc" product="default" msgid="1996334685607444282">"तुम्ही तुमची खाती, सेटिंग्ज, डाउनलोड केलेली अॅप्स आणि त्यांचा डेटा, मीडिया आणि इतर फायली एंक्रिप्ट करू शकता. तुम्ही तुमचा फोन एंक्रिप्ट केल्यानंतर, तुम्ही स्क्रीन लॉक (म्हणजे, एक पॅटर्न किंवा अंकीय पिन किंवा पासवर्ड) सेट केला आहे हे गृहित धरून, प्रत्येकवेळी तुम्ही फोन सुरू करता तेव्हा त्याचे एंक्रिप्ट करण्यासाठी आपल्याला स्क्रीन अनलॉक करण्याची आवश्यकता असेल. एंक्रिप्ट करण्याचा अन्य एकमेव मार्ग तुमचा सर्व डेटा मिटवून, फॅक्टरी डेटा रीसेट करणे हा होय.\n\nएंक्रिप्टीकरणास एक तास किंवा अधिक वेळ लागू शकतो. तुम्ही संपूर्ण प्रक्रियेत चार्ज केलेल्या बॅटरीसह प्रारंभ करणे आणि तुमचा फोन प्लग इन केलेला ठेवणे आवश्यक आहे. तुम्ही त्यात व्यत्यय आणल्यास, तुम्ही तुमचा काही किंवा सर्व डेटा गमवाल."</string>
<string name="crypt_keeper_button_text" product="tablet" msgid="7918671468758813824">"टॅबलेट एंक्रिप्ट करा"</string>
<string name="crypt_keeper_button_text" product="default" msgid="8737394386627318489">"फोन एंक्रिप्ट करा"</string>
<string name="crypt_keeper_low_charge_text" msgid="1422879728632636311">"तुमची बॅटरी चार्ज करा आणि पुन्हा प्रयत्न करा."</string>
<string name="crypt_keeper_unplugged_text" msgid="6597684068340036200">"तुमचा चार्जर प्लग इन करा आणि पुन्हा प्रयत्न करा."</string>
<string name="crypt_keeper_dialog_need_password_title" msgid="8532211509636340535">"कोणताही लॉक स्क्रीन पिन किंवा पासवर्ड नाही"</string>
- <string name="crypt_keeper_dialog_need_password_message" msgid="1341590897367808702">"तुम्ही एनक्रिप्शन सुरु करण्यापूर्वी तुम्हाला एक लॉक स्क्रीन पिन किंवा पासवर्ड सेट करण्याची आवश्यकता आहे."</string>
+ <string name="crypt_keeper_dialog_need_password_message" msgid="1341590897367808702">"तुम्ही एनक्रिप्शन सुरू करण्यापूर्वी तुम्हाला एक लॉक स्क्रीन पिन किंवा पासवर्ड सेट करण्याची आवश्यकता आहे."</string>
<string name="crypt_keeper_confirm_title" msgid="8884417036062084547">"एंक्रिप्ट करायचे?"</string>
<string name="crypt_keeper_final_desc" product="tablet" msgid="2713708841024805586">"एंक्रिप्शन कार्य परत न करता येणारे आहे आणि तुम्ही त्यात व्यत्यय आणल्यास, तुमचा डेटा गमावेल. एंक्रिप्शनला एखादा तास किंवा जास्त वेळ लागतो, यादरम्यान टॅबलेट कित्येक वेळा रीस्टार्ट होईल."</string>
<string name="crypt_keeper_final_desc" product="default" msgid="2483549885938505746">"एंक्रिप्शन कार्य परत न करता येणारे आहे आणि तुम्ही त्यात व्यत्यय आणल्यास, तुमचा डेटा गमावेल. एंक्रिप्शनला एखादा तास किंवा जास्त वेळ लागतो, यादरम्यान फोन कित्येक वेळा रीस्टार्ट होईल."</string>
@@ -524,16 +524,16 @@
<string name="crypt_keeper_setup_description" product="default" msgid="3391750289253411494">"तुमचा फोन एंक्रिप्ट केला जात असताना प्रतीक्षा करा. <xliff:g id="PERCENT">^1</xliff:g>% पूर्ण."</string>
<string name="crypt_keeper_setup_time_remaining" product="tablet" msgid="7841271240063858796">"तुमचा टॅब्लेट एंक्रिप्ट केला जात असताना प्रतीक्षा करा. शिल्लक वेळ: <xliff:g id="DURATION">^1</xliff:g>"</string>
<string name="crypt_keeper_setup_time_remaining" product="default" msgid="8049188590821796173">"तुमचा फोन एंक्रिप्ट केला जात असताना प्रतीक्षा करा. शिल्लक वेळ: <xliff:g id="DURATION">^1</xliff:g>"</string>
- <string name="crypt_keeper_force_power_cycle" product="tablet" msgid="9168213181845231795">"तुमचा टॅबलेट अनलॉक करण्यासाठी, तो बंद करा आणि नंतर चालू करा."</string>
+ <string name="crypt_keeper_force_power_cycle" product="tablet" msgid="9168213181845231795">"तुमचा टॅबलेट अनलॉक करण्यासाठी, तो बंद करा आणि नंतर सुरू करा."</string>
<string name="crypt_keeper_force_power_cycle" product="default" msgid="1182690469082263666">"तुमचा फोन अनलॉक करण्यासाठी, तो बंद करा आणि नंतर सुरू करा."</string>
<string name="crypt_keeper_warn_wipe" msgid="700814581500057050">"चेतावणी: अनलॉक करण्याच्या आणखी <xliff:g id="COUNT">^1</xliff:g> अयशस्वी प्रयत्नांनंतर तुमचे डिव्हाइस पुसले जाईल."</string>
<string name="crypt_keeper_enter_password" msgid="726933635335219421">"तुमचा पासवर्ड टाइप करा"</string>
<string name="crypt_keeper_failed_title" msgid="1906382607060855782">"एंक्रिप्शन अयशस्वी"</string>
- <string name="crypt_keeper_failed_summary" product="tablet" msgid="7844833877734529625">"कूटबद्धीकरणात व्यत्यय आला आणि हे पूर्ण होऊ शकत नाही. परिणामस्वरूप, आपल्या टॅबलेटवरील डेटा यापुढे प्रवेशयोग्य राहणार नाही. \n\n तुमचा टॅबलेट वापरून पुन्हा सुरु करण्यासाठी, तुम्हाला फॅक्टरी रीसेट करण्याची आवश्यकता आहे. रीसेट केल्यानंतर तुम्ही तुमचा टॅबलेट सेट करता, तेव्हा आपल्याकडे आपल्या Google खात्यावर बॅकअप घेतलेला कोणताही डेटा रीस्टोअर करण्याची संधी असेल."</string>
- <string name="crypt_keeper_failed_summary" product="default" msgid="2895589681839090312">"कूटबद्धीकरणात व्यत्यय आला आणि पूर्ण होऊ शकत नाही. परिणामस्वरूप, आपल्या फोनवरील डेटा यापुढे प्रवेशयोग्य नाही.\n\nतुमचा फोन वापरणे पुन्हा सुरु करण्यासाठी, तुम्हाला फॅक्टरी रीसेट करण्याची आवश्यकता आहे. रीसेट केल्यानंतर जेव्हा तुम्ही तुमचा फोन सेट करता, तेव्हा आपल्याकडे आपल्या Google खात्यावर बॅकअप घेतलेला कोणताही डेटा रीस्टोअर करण्याची संधी असेल."</string>
+ <string name="crypt_keeper_failed_summary" product="tablet" msgid="7844833877734529625">"कूटबद्धीकरणात व्यत्यय आला आणि हे पूर्ण होऊ शकत नाही. परिणामस्वरूप, आपल्या टॅबलेटवरील डेटा यापुढे प्रवेशयोग्य राहणार नाही. \n\n तुमचा टॅबलेट वापरून पुन्हा सुरू करण्यासाठी, तुम्हाला फॅक्टरी रीसेट करण्याची आवश्यकता आहे. रीसेट केल्यानंतर तुम्ही तुमचा टॅबलेट सेट करता, तेव्हा आपल्याकडे आपल्या Google खात्यावर बॅकअप घेतलेला कोणताही डेटा रीस्टोअर करण्याची संधी असेल."</string>
+ <string name="crypt_keeper_failed_summary" product="default" msgid="2895589681839090312">"कूटबद्धीकरणात व्यत्यय आला आणि पूर्ण होऊ शकत नाही. परिणामस्वरूप, आपल्या फोनवरील डेटा यापुढे प्रवेशयोग्य नाही.\n\nतुमचा फोन वापरणे पुन्हा सुरू करण्यासाठी, तुम्हाला फॅक्टरी रीसेट करण्याची आवश्यकता आहे. रीसेट केल्यानंतर जेव्हा तुम्ही तुमचा फोन सेट करता, तेव्हा आपल्याकडे आपल्या Google खात्यावर बॅकअप घेतलेला कोणताही डेटा रीस्टोअर करण्याची संधी असेल."</string>
<string name="crypt_keeper_data_corrupt_title" msgid="6561535293845985713">"विकूटन अयशस्वी"</string>
- <string name="crypt_keeper_data_corrupt_summary" product="tablet" msgid="7018748502706237323">"तुम्ही एंटर केलेला पासवर्ड चुकीचा आहे, परंतु दुर्दैवाने तुमचा डेटा दूषित आहे. \n\nतुमचा टॅबलेट वापरणे पुनः सुरु करण्यासाठी, तुम्हाला फॅक्टरी रीसेट करणे आवश्यक आहे. रीसेट केल्यानंतर तुम्ही तुमचा टॅबलेट सेट करता, तेव्हा तुम्हाला आपल्या Google खात्यावर बॅक अप घेतलेला कोणताही डेटा रीस्टोअर करण्याची संधी असेल."</string>
- <string name="crypt_keeper_data_corrupt_summary" product="default" msgid="5798580588985326937">"तुम्ही एंटर केलेला पासवर्ड बरोबर आहे, परंतु दुर्दैवाने तुमचा डेटा दूषित आहे. \n\nतुमचा फोन वापरणे पुनः सुरु करण्यासाठी, तुम्हाला फॅक्टरी रीसेट करणे आवश्यक आहे. रीसेट केल्यानंतर तुम्ही तुमचा फोन सेट करता, तेव्हा तुम्हाला आपल्या Google खात्यावर बॅक अप घेतलेला कोणताही डेटा रीस्टोअर करण्याची संधी असेल."</string>
+ <string name="crypt_keeper_data_corrupt_summary" product="tablet" msgid="7018748502706237323">"तुम्ही एंटर केलेला पासवर्ड चुकीचा आहे, परंतु दुर्दैवाने तुमचा डेटा दूषित आहे. \n\nतुमचा टॅबलेट वापरणे पुनः सुरू करण्यासाठी, तुम्हाला फॅक्टरी रीसेट करणे आवश्यक आहे. रीसेट केल्यानंतर तुम्ही तुमचा टॅबलेट सेट करता, तेव्हा तुम्हाला आपल्या Google खात्यावर बॅक अप घेतलेला कोणताही डेटा रीस्टोअर करण्याची संधी असेल."</string>
+ <string name="crypt_keeper_data_corrupt_summary" product="default" msgid="5798580588985326937">"तुम्ही एंटर केलेला पासवर्ड बरोबर आहे, परंतु दुर्दैवाने तुमचा डेटा दूषित आहे. \n\nतुमचा फोन वापरणे पुनः सुरू करण्यासाठी, तुम्हाला फॅक्टरी रीसेट करणे आवश्यक आहे. रीसेट केल्यानंतर तुम्ही तुमचा फोन सेट करता, तेव्हा तुम्हाला आपल्या Google खात्यावर बॅक अप घेतलेला कोणताही डेटा रीस्टोअर करण्याची संधी असेल."</string>
<string name="crypt_keeper_switch_input_method" msgid="4744137470890459582">"इनपुट पद्धत स्विच करा"</string>
<string name="suggested_lock_settings_title" msgid="1518155558803371661">"तुमचा फोन सुरक्षित ठेवा"</string>
<string name="suggested_lock_settings_summary" product="tablet" msgid="1861066918594412519">"टॅबलेटचे संरक्षण करण्यासाठी स्क्रीन लॉक सेट करा"</string>
@@ -578,7 +578,7 @@
<string name="fingerprint_unlock_set_unlock_pattern" msgid="132337696546315927">"फिंगरप्रिंट + पॅटर्न"</string>
<string name="fingerprint_unlock_set_unlock_pin" msgid="886426673328906002">"फिंगरप्रिंट + पिन"</string>
<string name="fingerprint_unlock_set_unlock_password" msgid="3325527833422156515">"फिंगरप्रिंट + पासवर्ड"</string>
- <string name="fingerprint_unlock_skip_fingerprint" msgid="2063700014903801639">"फिंगरप्रिंट न वापरता सुरु ठेवा"</string>
+ <string name="fingerprint_unlock_skip_fingerprint" msgid="2063700014903801639">"फिंगरप्रिंट न वापरता सुरू ठेवा"</string>
<string name="fingerprint_unlock_title" msgid="8009992449332532869">"तुम्ही आपल्या फिंगरप्रिंटचा वापर करून तुमचा फोन अनलॉक करू शकता. सुरक्षिततेसाठी, या पर्यायाकरिता एक बॅक अप स्क्रीन लॉक आवश्यक आहे."</string>
<string name="face_unlock_set_unlock_pattern" msgid="3748596996869406905">"फेस ऑथेंटिकेशन + पॅटर्न"</string>
<string name="face_unlock_set_unlock_pin" msgid="3320824093518497476">"फेस ऑथेंटिकेशन + पिन"</string>
@@ -658,7 +658,7 @@
<item quantity="other">पिन किमान <xliff:g id="COUNT_1">%d</xliff:g> अंकी असणे आवश्यक आहे</item>
<item quantity="one">पिनमध्ये किमान <xliff:g id="COUNT_0">%d</xliff:g> अंक असणे आवश्यक आहे</item>
</plurals>
- <string name="lockpassword_continue_label" msgid="7279261861924400655">"सुरु ठेवा"</string>
+ <string name="lockpassword_continue_label" msgid="7279261861924400655">"सुरू ठेवा"</string>
<plurals name="lockpassword_password_too_long" formatted="false" msgid="7994068708438608179">
<item quantity="other"><xliff:g id="NUMBER_1">%d</xliff:g> वर्णांपेक्षा कमी असणे आवश्यक आहे</item>
<item quantity="one"><xliff:g id="NUMBER_0">%d</xliff:g> वर्णापेक्षा कमी असणे आवश्यक आहे</item>
@@ -725,13 +725,13 @@
<item quantity="one">1 सक्रिय विश्वासू एजंट</item>
</plurals>
<string name="bluetooth_quick_toggle_title" msgid="7410319268406112792">"ब्लूटूथ"</string>
- <string name="bluetooth_quick_toggle_summary" msgid="3951769568065428093">"ब्लूटूथ चालू करा"</string>
+ <string name="bluetooth_quick_toggle_summary" msgid="3951769568065428093">"ब्लूटूथ सुरू करा"</string>
<string name="bluetooth_settings" msgid="5228032727293770389">"ब्लूटूथ"</string>
<string name="bluetooth_settings_title" msgid="7261244857456521825">"ब्लूटूथ"</string>
<string name="bluetooth_settings_summary" msgid="1221689092429277887">"कनेक्शन व्यवस्थापित करा, डिव्हाइस नाव आणि शोधयोग्यता सेट करा"</string>
<string name="bluetooth_pairing_request" msgid="7221745525632573125">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> सह जोडायचे?"</string>
- <string name="bluetooth_pairing_key_msg" msgid="1139230917419961975">"ब्लूटूथ पेअरींग कोड"</string>
- <string name="bluetooth_enter_passkey_msg" msgid="6205151011298670207">"पेअरींग कोड टाइप करा नंतर Return किंवा Enter दाबा"</string>
+ <string name="bluetooth_pairing_key_msg" msgid="1139230917419961975">"ब्लूटूथ पेअरिंग कोड"</string>
+ <string name="bluetooth_enter_passkey_msg" msgid="6205151011298670207">"पेअरिंग कोड टाइप करा नंतर Return किंवा Enter दाबा"</string>
<string name="bluetooth_enable_alphanumeric_pin" msgid="9138308197078115672">"पिन मध्ये अक्षरे किंवा प्रतीके आहेत"</string>
<string name="bluetooth_pin_values_hint" msgid="8044671726261326240">"सामान्यतः 0000 किंवा 1234"</string>
<string name="bluetooth_pin_values_hint_16_digits" msgid="2665983525706661525">"16 अंक असणे आवश्यक आहे"</string>
@@ -765,7 +765,7 @@
<string name="bluetooth_device_context_connect_advanced" msgid="423463405499392444">"पर्याय…"</string>
<string name="bluetooth_menu_advanced" msgid="7566858513372603652">"प्रगत"</string>
<string name="bluetooth_advanced_titlebar" msgid="6459469494039004784">"प्रगत ब्लूटूथ"</string>
- <string name="bluetooth_empty_list_bluetooth_off" msgid="6255367297830430459">"ब्लूटूथ चालू असते तेव्हा, तुमचे डिव्हाइस इतर जवळच्या ब्लूटूथ डिव्हाइस सह संवाद करु शकते."</string>
+ <string name="bluetooth_empty_list_bluetooth_off" msgid="6255367297830430459">"ब्लूटूथ सुरू असते तेव्हा, तुमचे डिव्हाइस इतर जवळच्या ब्लूटूथ डिव्हाइस सह संवाद करु शकते."</string>
<string name="bluetooth_scanning_on_info_message" msgid="5460370815156050550">"ब्लूटूथ सुरू असताना, तुमचे डिव्हाइस इतर जवळपासच्या ब्लूटूथ डिव्हाइसशी संवाद साधू शकते.\n\nडिव्हाइस अनुभव सुधारण्यासाठी, अॅप्स आणि सेवा ब्लूटूथ सुरू असताना देखील, अजूनही जवळपासचे डिव्हाइस कधीही स्कॅन करू शकते. उदाहरणार्थ, याचा वापर स्थानावर आधारित वैशिष्ट्ये आणि सेवा सुधारण्यात केला जाऊ शकतो. तुम्ही हे "<annotation id="link">"स्कॅनिंग सेटिंग्ज"</annotation>" मध्ये जाऊन बदलू शकता."</string>
<string name="ble_scan_notify_text" msgid="6290170236546386932">"स्थान अचूकता सुधारण्यासाठी, सिस्टम अॅप्स आणि सेवा अद्याप ब्लूटूथ डिव्हाइस शोधू शकतात. तुम्ही हे <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>स्कॅनिंग सेटिंग्ज<xliff:g id="LINK_END_1">LINK_END</xliff:g> मध्ये बदलू शकता."</string>
<string name="bluetooth_connect_failed" msgid="1151234676456333786">"कनेक्ट होऊ शकत नाही. पुन्हा प्रयत्न करा."</string>
@@ -816,14 +816,14 @@
<string name="wifi_tap_to_sign_in" msgid="1075925570550560453">"नेटवर्कवर साइन इन करण्यासाठी येथे टॅप करा"</string>
<string name="tx_link_speed" msgid="4557508597788146162">"<xliff:g id="TRANSMIT_LINK_SPEED">%1$d</xliff:g> Mbps"</string>
<string name="rx_link_speed" msgid="3735337600274627581">"<xliff:g id="RECEIVE_LINK_SPEED">%1$d</xliff:g> Mbps"</string>
- <string name="wifi_ask_enable" msgid="925862998663619616">"<xliff:g id="REQUESTER">%s</xliff:g> वाय-फाय चालू करू इच्छित आहे"</string>
+ <string name="wifi_ask_enable" msgid="925862998663619616">"<xliff:g id="REQUESTER">%s</xliff:g> वाय-फाय सुरू करू इच्छित आहे"</string>
<string name="wifi_ask_disable" msgid="2146839060110412974">"<xliff:g id="REQUESTER">%s</xliff:g> वाय-फाय बंद करू इच्छित आहे"</string>
<string name="art_verifier_for_debuggable_title" msgid="5223835619409464642">"डीबग करण्यायोग्य ॲप्सच्या बाइटकोडची पडताळणी करा"</string>
<string name="art_verifier_for_debuggable_summary" msgid="2204242476996701111">"डीबग करण्यायोग्य ॲप्ससाठी बाइटकोडची पडताळणी करण्यासाठी ART ला अनुमती द्या"</string>
<string name="nfc_quick_toggle_title" msgid="4990697912813795002">"NFC"</string>
<string name="nfc_quick_toggle_summary" product="tablet" msgid="983451155092850657">"टॅबलेट दुसर्या डिव्हाइसला स्पर्श करतो तेव्हा डेटा अदलाबदलीस अनुमती द्या"</string>
<string name="nfc_quick_toggle_summary" product="default" msgid="7141056939052895142">"फोन दुसर्या डिव्हाइसला स्पर्श करतो तेव्हा डेटा अदलाबदलीस अनुमती द्या"</string>
- <string name="nfc_disclaimer_title" msgid="4860231267351602970">"NFC चालू करा"</string>
+ <string name="nfc_disclaimer_title" msgid="4860231267351602970">"NFC सुरू करा"</string>
<string name="nfc_disclaimer_content" msgid="3066113577854565782">"NFC हे डिव्हाइस आणि दुसरे जवळपासचे डिव्हाइस किंवा पेमेंट टर्मिनल, ॲक्सेस रीडर आणि सुसंवादी जाहिराती किंवा टॅग यासारख्या लक्ष्यांमधील डेटाची अदलाबदल करते."</string>
<string name="nfc_secure_settings_title" msgid="5153751163174916581">"NFC चे संरक्षण करा"</string>
<string name="nfc_secure_toggle_summary" product="default" msgid="7631183023440112192">"स्क्रीन अनलॉक केल्यावर NFC पेमेंट आणि फक्त परिवहन वापरासाठीला अनुमती द्या"</string>
@@ -832,16 +832,16 @@
<string name="android_beam_off_summary" msgid="7365818039159364600">"बंद"</string>
<string name="nfc_disabled_summary" msgid="2181777971122724361">"NFC बंद असल्यामुळे उपलब्ध नाही"</string>
<string name="android_beam_label" msgid="5340299879556025708">"Android बीम"</string>
- <string name="android_beam_explained" msgid="4501176353247859329">"जेव्हा हे वैशिष्ट्य चालू केलेले असते तेव्हा, तुम्ही डिव्हाइस एकत्र जवळ धरून दुसर्या NFC-सक्षम डिव्हाइस वर अॅपचा आशय बीम करू शकता. उदाहरणार्थ, तुम्ही वेब पेज, YouTube व्हिडिओ, संपर्क आणि बरेच काही बीम करू शकता.\n\nफक्त डिव्हाइस एकत्र आणा (विशेषतः पाठोपाठ) आणि नंतर स्क्रीन टॅप करा. काय बीम केले जाते हे अॅप निर्धारित करते."</string>
+ <string name="android_beam_explained" msgid="4501176353247859329">"जेव्हा हे वैशिष्ट्य सुरू केलेले असते तेव्हा, तुम्ही डिव्हाइस एकत्र जवळ धरून दुसर्या NFC-सक्षम डिव्हाइस वर अॅपचा आशय बीम करू शकता. उदाहरणार्थ, तुम्ही वेब पेज, YouTube व्हिडिओ, संपर्क आणि बरेच काही बीम करू शकता.\n\nफक्त डिव्हाइस एकत्र आणा (विशेषतः पाठोपाठ) आणि नंतर स्क्रीन टॅप करा. काय बीम केले जाते हे अॅप निर्धारित करते."</string>
<string name="wifi_quick_toggle_title" msgid="7935778388625246184">"वाय-फाय"</string>
- <string name="wifi_quick_toggle_summary" msgid="2879870570547594266">"वाय-फाय चालू करा"</string>
+ <string name="wifi_quick_toggle_summary" msgid="2879870570547594266">"वाय-फाय सुरू करा"</string>
<string name="wifi_settings" msgid="7486492317310514109">"वाय-फाय"</string>
<string name="wifi_settings_master_switch_title" msgid="3917916944694253946">"वाय-फाय वापरा"</string>
<string name="wifi_settings_category" msgid="9094716747565527901">"वाय-फाय सेटिंग्ज"</string>
<string name="wifi_settings_title" msgid="5265554991622344805">"वाय-फाय"</string>
<string name="wifi_settings_summary" msgid="7117267255799892820">"वायरलेस प्रवेश बिंदू सेट करा आणि व्यवस्थापित करा"</string>
<string name="wifi_select_network" msgid="2541598480767312831">"वाय-फाय निवडा"</string>
- <string name="wifi_starting" msgid="1299466156783469023">"वाय-फाय चालू करत आहे..."</string>
+ <string name="wifi_starting" msgid="1299466156783469023">"वाय-फाय सुरू करत आहे..."</string>
<string name="wifi_stopping" msgid="413711069039939520">"वाय-फाय बंद करत आहे…"</string>
<string name="wifi_error" msgid="5605801874484465557">"एरर"</string>
<string name="wifi_sap_no_channel_error" msgid="6881796988574851628">"या देशात 5 GHz बँड उपलब्ध नाही"</string>
@@ -862,21 +862,21 @@
<string name="use_open_wifi_automatically_summary_scorer_unsupported_disabled" msgid="1123080670578756834">"वापरण्यासाठी, सुसंगत नेटवर्क रेटिंग पुरवठादार निवडा"</string>
<string name="wifi_install_credentials" msgid="5650088113710858289">"प्रमाणपत्रे इंस्टॉल करा"</string>
<string name="wifi_scan_notify_text" msgid="7614101215028336927">"स्थान अचूकता सुधारण्यासाठी अॅप्स आणि सेवा वाय-फाय बंद असतानाही कधीही वाय-फाय नेटवर्क शोधण्यासाठी स्कॅन करू शकतात. स्थानाधारित वैशिष्ट्ये आणि सेवांमध्ये सुधारणा करण्यासाठी हे वापरले जाऊ शकते. तुम्ही हे <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>स्कॅनिंग सेटिंग्ज<xliff:g id="LINK_END_1">LINK_END</xliff:g> मध्ये बदलू शकता."</string>
- <string name="wifi_scan_notify_text_scanning_off" msgid="723796963816095410">"स्थान अचूकता वाढवण्यासाठी, <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>स्कॅनिंग सेटिंग्ज<xliff:g id="LINK_END_1">LINK_END</xliff:g> मध्ये वाय-फाय स्कॅनिंग चालू करा."</string>
+ <string name="wifi_scan_notify_text_scanning_off" msgid="723796963816095410">"स्थान अचूकता वाढवण्यासाठी, <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>स्कॅनिंग सेटिंग्ज<xliff:g id="LINK_END_1">LINK_END</xliff:g> मध्ये वाय-फाय स्कॅनिंग सुरू करा."</string>
<string name="wifi_scan_notify_remember_choice" msgid="1235445971400237444">"पुन्हा दर्शवू नका"</string>
- <string name="wifi_setting_sleep_policy_title" msgid="2120785188625932076">"निष्क्रिय असताना वाय-फाय चालू ठेवा"</string>
- <string name="wifi_setting_on_during_sleep_title" msgid="856670183023402715">"निष्क्रिय करा दरम्यान वाय-फाय चालू"</string>
+ <string name="wifi_setting_sleep_policy_title" msgid="2120785188625932076">"निष्क्रिय असताना वाय-फाय सुरू ठेवा"</string>
+ <string name="wifi_setting_on_during_sleep_title" msgid="856670183023402715">"निष्क्रिय करा दरम्यान वाय-फाय सुरू"</string>
<string name="wifi_setting_sleep_policy_error" msgid="9029652631829560733">"सेटिंग बदलताना समस्या आली"</string>
<string name="wifi_suspend_efficiency_title" msgid="5292408676086580527">"कार्यक्षमतेत सुधारणा करा"</string>
<string name="wifi_suspend_optimizations" msgid="8826033336622472222">"वाय-फाय ऑप्टिमायझेशन"</string>
- <string name="wifi_suspend_optimizations_summary" msgid="2375789014394339008">"वाय-फाय चालू असताना बॅटरी वापर कमी करा"</string>
+ <string name="wifi_suspend_optimizations_summary" msgid="2375789014394339008">"वाय-फाय सुरू असताना बॅटरी वापर कमी करा"</string>
<string name="wifi_limit_optimizations_summary" msgid="1192849485764156570">"वाय-फाय द्वारे वापरलेल्या बॅटरीवर मर्यादा घाला"</string>
<string name="wifi_switch_away_when_unvalidated" msgid="2418577764071293971">"वाय-फायला इंटरनेट ॲक्सेस नसल्यास मोबाइल डेटावर स्विच करा."</string>
<string name="wifi_cellular_data_fallback_title" msgid="5067241930716252665">"मोबाइल डेटावर स्वयंचलितपणे स्विच करा"</string>
<string name="wifi_cellular_data_fallback_summary" msgid="2721467405851519769">"वाय-फायवरून इंटरनेट ॲक्सेस नसताना मोबाइल डेटा वापरा. डेटा वापर शुल्क लागू शकते."</string>
<string name="wifi_add_network" msgid="4094957940791876640">"नेटवर्क जोडा"</string>
<string name="wifi_configure_settings_preference_title" msgid="2678534679408777268">"वाय-फाय प्राधान्ये"</string>
- <string name="wifi_configure_settings_preference_summary_wakeup_on" msgid="5714892572614655675">"वाय-फाय आपोआप परत चालू होते"</string>
+ <string name="wifi_configure_settings_preference_summary_wakeup_on" msgid="5714892572614655675">"वाय-फाय आपोआप परत सुरू होते"</string>
<string name="wifi_configure_settings_preference_summary_wakeup_off" msgid="286904094152909651">"वाय-फाय आपोआप परत सुरू होत नाही"</string>
<string name="wifi_access_points" msgid="1647976498906871869">"वाय-फाय नेटवर्क"</string>
<string name="wifi_menu_more_options" msgid="8318269834264035524">"अधिक पर्याय"</string>
@@ -888,7 +888,7 @@
<string name="wifi_menu_remember" msgid="717257200269700641">"नेटवर्क लक्षात ठेवा"</string>
<string name="wifi_menu_forget" msgid="7561140554450163075">"नेटवर्क विसरा"</string>
<string name="wifi_menu_modify" msgid="4080178040721021101">"नेटवर्क सुधारित करा"</string>
- <string name="wifi_empty_list_wifi_off" msgid="272877164691346240">"उपलब्ध नेटवर्क पाहण्यासाठी, वाय-फाय चालू करा."</string>
+ <string name="wifi_empty_list_wifi_off" msgid="272877164691346240">"उपलब्ध नेटवर्क पाहण्यासाठी, वाय-फाय सुरू करा."</string>
<string name="wifi_empty_list_wifi_on" msgid="881478805041020600">"वाय-फाय नेटवर्क शोधत आहे…"</string>
<string name="wifi_empty_list_user_restricted" msgid="2341613007817352431">"तुम्हाला वाय-फाय नेटवर्क बदलण्याची परवानगी नाही."</string>
<string name="wifi_more" msgid="3538241640407382185">"अधिक"</string>
@@ -980,7 +980,7 @@
<string name="wifi_wps_available_second_item" msgid="5703265526619705185">" (WPS उपलब्ध)"</string>
<string name="wifi_carrier_connect" msgid="7202618367339982884">"वाहक वाय-फाय नेटवर्क"</string>
<string name="wifi_carrier_content" msgid="3467402515071949783">"<xliff:g id="NAME">%1$s</xliff:g> ने कनेक्ट करा"</string>
- <string name="wifi_scan_always_turnon_message" msgid="7811846312032594248">"स्थान अचूकता सुधारण्यासाठी आणि इतर हेतूंसाठी, <xliff:g id="APP_NAME">%1$s</xliff:g> ला नेटवर्क स्कॅनिंग चालू करण्याची आवश्यकता आहे, वाय-फाय बंद असताना देखील.\n\nस्कॅन करू इच्छित सर्व ॲप्सना अनुमती द्यायची?"</string>
+ <string name="wifi_scan_always_turnon_message" msgid="7811846312032594248">"स्थान अचूकता सुधारण्यासाठी आणि इतर हेतूंसाठी, <xliff:g id="APP_NAME">%1$s</xliff:g> ला नेटवर्क स्कॅनिंग सुरू करण्याची आवश्यकता आहे, वाय-फाय बंद असताना देखील.\n\nस्कॅन करू इच्छित सर्व ॲप्सना अनुमती द्यायची?"</string>
<string name="wifi_scan_always_turnoff_message" msgid="556993843641750002">"हे बंद करण्यासाठी, ओव्हरफ्लो मेनू मधील प्रगत वर जा."</string>
<string name="wifi_scan_always_confirm_allow" msgid="8857664849515496237">"अनुमती द्या"</string>
<string name="wifi_scan_always_confirm_deny" msgid="6190909841125369403">"नकार द्या"</string>
@@ -993,7 +993,7 @@
<string name="lost_internet_access_title" msgid="1061916948695946130">"वाय-फाय इंटरनेटशी कनेक्ट केलेले नाही"</string>
<string name="lost_internet_access_text" msgid="8962010031520731813">"वाय-फायचे कनेक्शन खराब असताना तुम्ही मोबाइल नेटवर्कवर स्विच करू शकता. डेटा वापर शुल्क लागू होऊ शकते."</string>
<string name="lost_internet_access_switch" msgid="9218006455779873700">"मोबाइलवर स्विच करा"</string>
- <string name="lost_internet_access_cancel" msgid="6577871064062518744">"वाय‑फाय वर सुरु ठेवा"</string>
+ <string name="lost_internet_access_cancel" msgid="6577871064062518744">"वाय‑फाय वर सुरू ठेवा"</string>
<string name="lost_internet_access_persist" msgid="6368659013482055611">"पुन्हा कधीही दर्शवू नका"</string>
<string name="wifi_connect" msgid="5653612760223533650">"कनेक्ट करा"</string>
<string name="wifi_turned_on_message" msgid="3377779146238242894">"वाय-फाय सुरू केले आहे"</string>
@@ -1060,10 +1060,10 @@
<string name="wifi_hotspot_off_subtext" msgid="6177054857136221058">"इतर डिव्हाइससोबत इंटरनेट किंवा आशय शेअर करत नाही"</string>
<string name="wifi_hotspot_tethering_on_subtext" product="tablet" msgid="71421730039785897">"या टॅबलेटचे इंटरनेट कनेक्शन हॉटस्पॉटने शेअर करत आहे"</string>
<string name="wifi_hotspot_tethering_on_subtext" product="default" msgid="8914285514605049879">"या फोनचे इंटरनेट कनेक्शन हॉटस्पॉटने शेअर करत आहे"</string>
- <string name="wifi_hotspot_on_local_only_subtext" msgid="7415381343846704553">"अॅप आशय शेअर करत आहे. इंटरनेट कनेक्शन शेअर करण्यासाठी, हॉटस्पॉट बंद करा, नंतर चालू करा"</string>
+ <string name="wifi_hotspot_on_local_only_subtext" msgid="7415381343846704553">"अॅप आशय शेअर करत आहे. इंटरनेट कनेक्शन शेअर करण्यासाठी, हॉटस्पॉट बंद करा, नंतर सुरू करा"</string>
<string name="wifi_hotspot_no_password_subtext" msgid="5400500962974373706">"पासवर्ड सेट केलेला नाही"</string>
<string name="wifi_hotspot_name_title" msgid="6572202165400226127">"हॉटस्पॉट नाव"</string>
- <string name="wifi_hotspot_name_summary_connecting" msgid="5176787959408511889">"<xliff:g id="WIFI_HOTSPOT_NAME">%1$s</xliff:g> चालू करत आहे..."</string>
+ <string name="wifi_hotspot_name_summary_connecting" msgid="5176787959408511889">"<xliff:g id="WIFI_HOTSPOT_NAME">%1$s</xliff:g> सुरू करत आहे..."</string>
<string name="wifi_hotspot_name_summary_connected" msgid="8387768642326756749">"इतर डिव्हाइस <xliff:g id="WIFI_HOTSPOT_NAME">%1$s</xliff:g>शी कनेक्ट होऊ शकतात"</string>
<string name="wifi_hotspot_password_title" msgid="4289338152595154889">"हॉटस्पॉट पासवर्ड"</string>
<string name="wifi_hotspot_ap_band_title" msgid="3485744480410441949">"AP बॅंड"</string>
@@ -1071,7 +1071,7 @@
<string name="wifi_hotspot_footer_info_local_only" msgid="3339582350894639261">"जवळपासच्या डिव्हाइससोबत आशय शेअर करण्यासाठी अॅप्स हॉटस्पॉट तयार करू शकतात."</string>
<string name="wifi_hotspot_auto_off_title" msgid="7416022590415189590">"हॉटस्पॉट आपोआप बंद करा"</string>
<string name="wifi_hotspot_auto_off_summary" msgid="3866769400624802105">"कुठलीही डिव्हाइस कनेक्ट केली नसल्यास, वाय-फाय हॉटस्पॉट बंद होईल"</string>
- <string name="wifi_tether_starting" msgid="7676952148471297900">"हॉटस्पॉट चालू करत आहे…"</string>
+ <string name="wifi_tether_starting" msgid="7676952148471297900">"हॉटस्पॉट सुरू करत आहे…"</string>
<string name="wifi_tether_stopping" msgid="7478561853791953349">"हॉटस्पॉट बंद करत आहे…"</string>
<string name="wifi_tether_enabled_subtext" msgid="7534760116478734006">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> सक्रिय आहे"</string>
<string name="wifi_tether_failed_subtext" msgid="3501001612207106">"पोर्टेबल वाय-फाय हॉटस्पॉट एरर"</string>
@@ -1109,7 +1109,7 @@
<string name="wifi_calling_mode_wifi_preferred_summary" msgid="8298294808362169798">"वाय-फाय उपलब्ध नसल्यास, मोबाइल नेटवर्क वापरा"</string>
<string name="wifi_calling_mode_cellular_preferred_summary" msgid="4906499810156794061">"मोबाइल नेटवर्क उपलब्ध नसल्यास, वाय-फाय वापरा"</string>
<string name="wifi_calling_mode_wifi_only_summary" msgid="6928556021002500522">"वाय-फायवरून कॉल करा. वाय-फाय गमावल्यास, कॉल संपेल."</string>
- <string name="wifi_calling_off_explanation" msgid="1653424723742898015">"वाय-फाय कॉलिंग चालू असताना, तुमचा फोन तुमच्या प्राधान्यावर आणि कोणता सिग्नल मजबूत आहे याच्या आधारावर, वाय-फाय नेटवर्क किंवा तुमच्या वाहकाच्या नेटवर्कद्वारे कॉल राउट करू शकतो. हे वैशिष्ट्य सुरू करण्यापूर्वी, फी आणि इतर तपशीलांच्या संबंधात तुमच्या वाहकास विचारा. <xliff:g id="ADDITIONAL_TEXT">%1$s</xliff:g>"</string>
+ <string name="wifi_calling_off_explanation" msgid="1653424723742898015">"वाय-फाय कॉलिंग सुरू असताना, तुमचा फोन तुमच्या प्राधान्यावर आणि कोणता सिग्नल मजबूत आहे याच्या आधारावर, वाय-फाय नेटवर्क किंवा तुमच्या वाहकाच्या नेटवर्कद्वारे कॉल राउट करू शकतो. हे वैशिष्ट्य सुरू करण्यापूर्वी, फी आणि इतर तपशीलांच्या संबंधात तुमच्या वाहकास विचारा. <xliff:g id="ADDITIONAL_TEXT">%1$s</xliff:g>"</string>
<string name="wifi_calling_off_explanation_2" msgid="8648609693875720408"></string>
<string name="emergency_address_title" msgid="5779915349686787024">"संकटकालीन पत्ता"</string>
<string name="emergency_address_summary" msgid="478668478569851714">"तुम्ही वाय-फाय वरून आणीबाणी कॉल केल्यावर हे तुमचे स्थान असल्याचे दाखवले जाते"</string>
@@ -1202,7 +1202,7 @@
<string name="auto_brightness_subtitle" msgid="8516999348793100665">"तुम्ही प्राधान्य दिलेला उज्ज्वलता स्तर"</string>
<string name="auto_brightness_off_summary" msgid="6162650416289359104">"उपलब्ध प्रकाशासाठी समायोजित करू नका"</string>
<string name="auto_brightness_very_high_summary" msgid="7202032980509583918">"वाढलेला बॅटरी वापर"</string>
- <string name="auto_brightness_disclaimer" msgid="5416696351199148809">"उपलब्ध प्रकाशासाठी उज्ज्वलता स्तर अनुकूल करा. हे वैशिष्ट्य चालू असताना, तुम्ही तरीही उज्ज्वलता तात्पुरती समायोजित करू शकता."</string>
+ <string name="auto_brightness_disclaimer" msgid="5416696351199148809">"उपलब्ध प्रकाशासाठी उज्ज्वलता स्तर अनुकूल करा. हे वैशिष्ट्य सुरू असताना, तुम्ही तरीही उज्ज्वलता तात्पुरती समायोजित करू शकता."</string>
<string name="auto_brightness_description" msgid="8209140379089535411">"तुमच्या स्क्रीनचा ब्राइटनेस तुमच्या वातावरण आणि ॲक्टिव्हिटीशी आपोआप अॅडजस्ट होईल. अॅडॅप्टिव्ह ब्राइटनेसला तुमची प्राधान्ये जाणून घेण्यात मदत करण्यासाठी तुम्ही स्लाइडर मॅन्युअली हलवू शकता."</string>
<string name="display_white_balance_title" msgid="5747260735311935143">"व्हाइट बॅलन्स डिस्प्ले करा"</string>
<string name="adaptive_sleep_title" msgid="3237620948260957018">"स्क्रीन अवेअर"</string>
@@ -1222,9 +1222,9 @@
<string name="night_display_temperature_title" msgid="8375126629902616296">"तीव्रता"</string>
<string name="night_display_summary_off" msgid="8850539785332228069">"बंद / <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="night_display_summary_off_auto_mode_never" msgid="8618824386434992487">"आपोआप कधीही सुरू होणार नाही"</string>
- <string name="night_display_summary_off_auto_mode_custom" msgid="596847003171394411">"<xliff:g id="ID_1">%1$s</xliff:g> वाजता आपोआप चालू होईल"</string>
- <string name="night_display_summary_off_auto_mode_twilight" msgid="4071750976585359952">"सूर्यास्ताच्या वेळी आपोआप चालू होईल"</string>
- <string name="night_display_summary_on" msgid="6580571388791426596">"चालू / <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="night_display_summary_off_auto_mode_custom" msgid="596847003171394411">"<xliff:g id="ID_1">%1$s</xliff:g> वाजता आपोआप सुरू होईल"</string>
+ <string name="night_display_summary_off_auto_mode_twilight" msgid="4071750976585359952">"सूर्यास्ताच्या वेळी आपोआप सुरू होईल"</string>
+ <string name="night_display_summary_on" msgid="6580571388791426596">"सुरू / <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="night_display_summary_on_auto_mode_never" msgid="5461580863060506687">"आपोआप कधीही बंद होणार नाही"</string>
<string name="night_display_summary_on_auto_mode_custom" msgid="2200631112239399233">"<xliff:g id="ID_1">%1$s</xliff:g> वाजता आपोआप बंद होईल"</string>
<string name="night_display_summary_on_auto_mode_twilight" msgid="8386769601369289561">"सूर्योदयाच्या वेळी आपोआप बंद होईल"</string>
@@ -1252,7 +1252,7 @@
<string name="screensaver_settings_summary_dock" msgid="6297808146601570196">"डॉक केलेले असताना"</string>
<string name="screensaver_settings_summary_never" msgid="3995259444981620707">"कधीही नाही"</string>
<string name="screensaver_settings_summary_off" msgid="6119947316484763131">"बंद"</string>
- <string name="screensaver_settings_disabled_prompt" msgid="1897518064782596947">"फोन डॉक केलेला असताना आणि/किंवा निष्क्रिय असताना काय होते हे नियंत्रित करण्यासाठी स्क्रीन सेव्हर चालू करा."</string>
+ <string name="screensaver_settings_disabled_prompt" msgid="1897518064782596947">"फोन डॉक केलेला असताना आणि/किंवा निष्क्रिय असताना काय होते हे नियंत्रित करण्यासाठी स्क्रीन सेव्हर सुरू करा."</string>
<string name="screensaver_settings_when_to_dream" msgid="3763052013516826348">"कधी सुरू करायचे"</string>
<string name="screensaver_settings_current" msgid="4017556173596361672">"सध्याचा स्क्रीन सेव्हर"</string>
<string name="screensaver_settings_dream_start" msgid="3772227299054662550">"आता सुरू करा"</string>
@@ -1473,7 +1473,7 @@
<string name="storage_wizard_format_progress_title" msgid="6905902731208646436">"<xliff:g id="NAME">^1</xliff:g> फॉर्मेट करत आहे…"</string>
<string name="storage_wizard_format_progress_body" msgid="5346709539457190419">"फॉरमॅट होत असताना <xliff:g id="NAME">^1</xliff:g> काढू टाकू नका."</string>
<string name="storage_wizard_migrate_title" msgid="7440473364104826496">"डेटा नवीन संचयनावर हलवा"</string>
- <string name="storage_wizard_migrate_body" msgid="4959356431201831339">"या नवीन <xliff:g id="NAME">^1</xliff:g> वर तुम्ही तुमचे फोटो, फायली आणि काही अॅप्स हलवू शकता. \n\nहलविण्यास सुमारे <xliff:g id="TIME">^2</xliff:g> लागेल आणि अंतर्गत संचयनावर <xliff:g id="SIZE">^3</xliff:g> मोकळे करेल. काही अॅप्स सुरु असताना कार्य करणार नाहीत."</string>
+ <string name="storage_wizard_migrate_body" msgid="4959356431201831339">"या नवीन <xliff:g id="NAME">^1</xliff:g> वर तुम्ही तुमचे फोटो, फायली आणि काही अॅप्स हलवू शकता. \n\nहलविण्यास सुमारे <xliff:g id="TIME">^2</xliff:g> लागेल आणि अंतर्गत संचयनावर <xliff:g id="SIZE">^3</xliff:g> मोकळे करेल. काही अॅप्स सुरू असताना कार्य करणार नाहीत."</string>
<string name="storage_wizard_migrate_now" msgid="9004605853000689024">"आता हलवा"</string>
<string name="storage_wizard_migrate_later" msgid="5303070653970922924">"नंतर हलवा"</string>
<string name="storage_wizard_migrate_confirm_title" msgid="5768497751644935313">"आता डेटा हलवा"</string>
@@ -1490,7 +1490,7 @@
<string name="storage_wizard_move_progress_title" msgid="5250929161803336592">"<xliff:g id="APP">^1</xliff:g> हलवित आहे…"</string>
<string name="storage_wizard_move_progress_body" msgid="1713792142250410169">"हलविण्यादरम्यान <xliff:g id="NAME">^1</xliff:g> काढू नका. \n\nहलविणे पूर्ण होईपर्यंत या डिव्हाइसवरील <xliff:g id="APP">^2</xliff:g> अॅप उपलब्ध नसेल."</string>
<string name="storage_wizard_move_progress_cancel" msgid="9047521329704060401">"हलविणे रद्द करा"</string>
- <string name="storage_wizard_slow_body" msgid="2307974936036261069">"हे <xliff:g id="NAME_0">^1</xliff:g> धीमे असल्याचे दिसते. \n\nतुम्ही सुरु ठेवू शकता परंतु या स्थानावर हलविलेल्या अॅप्समध्ये अडथळा येऊ शकतो आणि डेटा स्थानांतरणास बराच वेळ लागू शकतो. \n\nअधिक चांगल्या कार्यप्रदर्शनासाठी आणखी जलद <xliff:g id="NAME_1">^1</xliff:g> वापरण्याचा विचार करा."</string>
+ <string name="storage_wizard_slow_body" msgid="2307974936036261069">"हे <xliff:g id="NAME_0">^1</xliff:g> धीमे असल्याचे दिसते. \n\nतुम्ही सुरू ठेवू शकता परंतु या स्थानावर हलविलेल्या अॅप्समध्ये अडथळा येऊ शकतो आणि डेटा स्थानांतरणास बराच वेळ लागू शकतो. \n\nअधिक चांगल्या कार्यप्रदर्शनासाठी आणखी जलद <xliff:g id="NAME_1">^1</xliff:g> वापरण्याचा विचार करा."</string>
<string name="storage_wizard_init_v2_title" msgid="7408910177547901960">"तुम्ही हे <xliff:g id="NAME">^1</xliff:g> कसे वापराल?"</string>
<string name="storage_wizard_init_v2_internal_title" product="tablet" msgid="7948795312504302810">"अतिरिक्त टॅबलेट स्टोरेजसाठी वापरा"</string>
<string name="storage_wizard_init_v2_internal_summary" product="tablet" msgid="6237770506398410172">"फक्त या टॅबलेटवरील अॅप्स, फायली आणि मीडियासाठी"</string>
@@ -1520,7 +1520,7 @@
<string name="storage_wizard_slow_v2_title" msgid="4662009769135525740">"हळू <xliff:g id="NAME">^1</xliff:g>"</string>
<string name="storage_wizard_slow_v2_body" msgid="4443996335261861797">"तुम्ही तरीही <xliff:g id="NAME_0">^1</xliff:g> वापरू शकता, परंतु ते हळू असू शकते. \n\nया <xliff:g id="NAME_1">^2</xliff:g> वर स्टोअर केलेली अॅप्स योग्यरित्या काम करू शकणार नाहीत आणि आशय ट्रांसफरसाठी जास्त वेळ लागू शकतो. \n\n जलद <xliff:g id="NAME_2">^3</xliff:g> वापरण्याचा प्रयत्न करा, किंवा त्याऐवजी पोर्टेबल स्टोरेजसाठी <xliff:g id="NAME_3">^4</xliff:g> वापरा."</string>
<string name="storage_wizard_slow_v2_start_over" msgid="1686964124972424100">"पुन्हा सुरू करा"</string>
- <string name="storage_wizard_slow_v2_continue" msgid="2320238517431613392">"सुरु ठेवा"</string>
+ <string name="storage_wizard_slow_v2_continue" msgid="2320238517431613392">"सुरू ठेवा"</string>
<string name="storage_wizard_ready_v2_external_body" msgid="5803422587027895664">"तुम्ही <xliff:g id="NAME">^1</xliff:g> मध्ये आशय हलवू शकता"</string>
<!-- syntax error in translation for storage_wizard_ready_v2_internal_body (678829432420351228) org.xmlpull.v1.XmlPullParserException: expected: /string read: b (position:END_TAG </b>@1:142 in <string name="storage_wizard_ready_v2_internal_body" msgid="678829432420351228">"<xliff:g id="NAME">^1</xliff:g> वर आशय हलवण्यासाठी, "</b>"सेटिंग्ज > स्टोरेज"<b>" वर जा"</string>
) -->
@@ -1616,10 +1616,10 @@
<string name="tether_settings_title_bluetooth" msgid="1999590158102569959">"ब्लूटूथ टेदरिंग"</string>
<string name="tether_settings_title_usb_bluetooth" msgid="1159128764162788159">"टेदरिंग"</string>
<string name="tether_settings_title_all" msgid="6935843543433954181">"हॉटस्पॉट आणि टेदरिंग"</string>
- <string name="tether_settings_summary_hotspot_on_tether_on" msgid="1289593649526514499">"हॉटस्पॉट चालू, टेदरिंग करत आहे"</string>
- <string name="tether_settings_summary_hotspot_on_tether_off" msgid="8010689354668285422">"हॉटस्पॉट चालू"</string>
+ <string name="tether_settings_summary_hotspot_on_tether_on" msgid="1289593649526514499">"हॉटस्पॉट सुरू, टेदरिंग करत आहे"</string>
+ <string name="tether_settings_summary_hotspot_on_tether_off" msgid="8010689354668285422">"हॉटस्पॉट सुरू"</string>
<string name="tether_settings_summary_hotspot_off_tether_on" msgid="1349909238672649877">"टेदरिंग"</string>
- <string name="tether_settings_disabled_on_data_saver" msgid="3682544845899910726">"डेटा सेव्हर चालू असताना टिथर करू शकत नाही किंवा पोर्टेबल हॉटस्पॉटचा वापर करू शकत नाही"</string>
+ <string name="tether_settings_disabled_on_data_saver" msgid="3682544845899910726">"डेटा सेव्हर सुरू असताना टिथर करू शकत नाही किंवा पोर्टेबल हॉटस्पॉटचा वापर करू शकत नाही"</string>
<string name="usb_title" msgid="7480927657535578688">"USB"</string>
<string name="usb_tethering_button_text" msgid="6242228383142012332">"USB टेदरिंग"</string>
<string name="usb_tethering_subtext" product="default" msgid="1573513260339548671">"फोनचे इंटरनेट कनेक्शन USB ने शेअर करा"</string>
@@ -1648,7 +1648,7 @@
<string name="mobile_insert_sim_card" msgid="7594550403454243732">"कृपया सिम कार्ड घाला आणि रीस्टार्ट करा"</string>
<string name="mobile_connect_to_internet" msgid="6031886097365170913">"कृपया इंटरनेटशी कनेक्ट करा"</string>
<string name="location_title" msgid="8664674161765477168">"माझे स्थान"</string>
- <string name="managed_profile_location_switch_title" msgid="8157384427925389680">"कार्य प्रोफाईलसाठी स्थान"</string>
+ <string name="managed_profile_location_switch_title" msgid="8157384427925389680">"कार्य प्रोफाइलसाठी स्थान"</string>
<string name="location_app_level_permissions" msgid="1298041503927632960">"अॅप परवानगी"</string>
<string name="location_app_permission_summary_location_off" msgid="541372845344796336">"स्थान बंद आहे"</string>
<plurals name="location_app_permission_summary_location_on" formatted="false" msgid="7904821382328758218">
@@ -1727,12 +1727,12 @@
<string name="lockpassword_choose_your_password_header_for_face" msgid="8823110536502072216">"फेस ऑथेंटिकेशन वापरण्यासाठी, पासवर्ड सेट करा"</string>
<string name="lockpassword_choose_your_pattern_header_for_face" msgid="5563793748503883666">"फेस ऑथेंटिकेशन वापरण्यासाठी, पॅटर्न सेट करा"</string>
<string name="lockpassword_choose_your_pin_header_for_face" msgid="7238352632535405068">"फेस ऑथेंटिकेशन वापरण्यासाठी, पिन सेट करा"</string>
- <string name="lockpassword_confirm_your_pattern_generic" msgid="6146545393074070916">"सुरु ठेवण्यासाठी तुमच्या डिव्हाइस पॅटर्नचा वापर करा"</string>
- <string name="lockpassword_confirm_your_pin_generic" msgid="8732268389177735264">"सुरु ठेवण्यासाठी तुमचे डिव्हाइस पिन एंटर करा"</string>
- <string name="lockpassword_confirm_your_password_generic" msgid="6304552647060899594">"सुरु ठेवण्यासाठी तुमचे डिव्हाइस पासवर्ड एंटर करा"</string>
- <string name="lockpassword_confirm_your_pattern_generic_profile" msgid="3074250084050465513">"सुरु ठेवण्यासाठी आपल्या कार्य नमुन्याचा वापर करा"</string>
- <string name="lockpassword_confirm_your_pin_generic_profile" msgid="6037908971086439523">"सुरु ठेवण्यासाठी तुमचा कार्य पिन एंटर करा"</string>
- <string name="lockpassword_confirm_your_password_generic_profile" msgid="2646162490703489685">"सुरु ठेवण्यासाठी तुमचा कार्य पासवर्ड एंटर करा"</string>
+ <string name="lockpassword_confirm_your_pattern_generic" msgid="6146545393074070916">"सुरू ठेवण्यासाठी तुमच्या डिव्हाइस पॅटर्नचा वापर करा"</string>
+ <string name="lockpassword_confirm_your_pin_generic" msgid="8732268389177735264">"सुरू ठेवण्यासाठी तुमचे डिव्हाइस पिन एंटर करा"</string>
+ <string name="lockpassword_confirm_your_password_generic" msgid="6304552647060899594">"सुरू ठेवण्यासाठी तुमचे डिव्हाइस पासवर्ड एंटर करा"</string>
+ <string name="lockpassword_confirm_your_pattern_generic_profile" msgid="3074250084050465513">"सुरू ठेवण्यासाठी आपल्या कार्य नमुन्याचा वापर करा"</string>
+ <string name="lockpassword_confirm_your_pin_generic_profile" msgid="6037908971086439523">"सुरू ठेवण्यासाठी तुमचा कार्य पिन एंटर करा"</string>
+ <string name="lockpassword_confirm_your_password_generic_profile" msgid="2646162490703489685">"सुरू ठेवण्यासाठी तुमचा कार्य पासवर्ड एंटर करा"</string>
<string name="lockpassword_strong_auth_required_device_pattern" msgid="1014214190135045781">"वाढीव सुरक्षिततेसाठी, तुमच्या डीव्हाइसचा पॅटर्न वापरा"</string>
<string name="lockpassword_strong_auth_required_device_pin" msgid="24030584350601016">"वाढीव सुरक्षिततेसाठी, तुमच्या डिव्हाइसचा पिन टाका"</string>
<string name="lockpassword_strong_auth_required_device_password" msgid="7746588206458754598">"वाढीव सुरक्षिततेसाठी, तुमच्या डिव्हाइसचा पासवर्ड टाका"</string>
@@ -1761,7 +1761,7 @@
<string name="lockpattern_confirm_button_text" msgid="7059311304112902598">"निश्चित करा"</string>
<string name="lockpattern_restart_button_text" msgid="4322968353922529868">"पुन्हा रेखाटा"</string>
<string name="lockpattern_retry_button_text" msgid="5473976578241534298">"साफ करा"</string>
- <string name="lockpattern_continue_button_text" msgid="3328913552656376892">"सुरु ठेवा"</string>
+ <string name="lockpattern_continue_button_text" msgid="3328913552656376892">"सुरू ठेवा"</string>
<string name="lockpattern_settings_title" msgid="5152005866870766842">"पॅटर्न अनलॉक करा"</string>
<string name="lockpattern_settings_enable_title" msgid="8508410891939268080">"आवश्यक पॅटर्न"</string>
<string name="lockpattern_settings_enable_summary" msgid="8027605503917737512">"स्क्रीन अनलॉक करण्यासाठी पॅटर्न रेखाटणे आवश्यक आहे"</string>
@@ -1840,7 +1840,7 @@
<string name="sort_order_size" msgid="3167376197248713027">"आकारानुसार क्रमवारी लावा"</string>
<string name="sort_order_recent_notification" msgid="5592496977404445941">"सर्वात अलीकडील"</string>
<string name="sort_order_frequent_notification" msgid="5640245013098010347">"सर्वाधिक"</string>
- <string name="show_running_services" msgid="1895994322704667543">"चालू सेवा दर्शवा"</string>
+ <string name="show_running_services" msgid="1895994322704667543">"सुरू सेवा दर्शवा"</string>
<string name="show_background_processes" msgid="88012264528093617">"कॅशे केलेल्या प्रक्रिया दर्शवा"</string>
<string name="default_emergency_app" msgid="286530070173495823">"आणीबाणी अॅप"</string>
<string name="reset_app_preferences" msgid="1426500030595212077">"अॅप प्राधान्ये रीसेट करा"</string>
@@ -1925,7 +1925,7 @@
<string name="running_processes_header_used_prefix" msgid="2984090414986096084">"वापरलेली"</string>
<string name="running_processes_header_cached_prefix" msgid="8398315634778729026">"कॅशे केलेले"</string>
<string name="running_processes_header_ram" msgid="3867954556214535588">"RAM चे <xliff:g id="RAM_0">%1$s</xliff:g>"</string>
- <string name="runningservicedetails_settings_title" msgid="7075556369123578372">"चालू अॅप"</string>
+ <string name="runningservicedetails_settings_title" msgid="7075556369123578372">"सुरू अॅप"</string>
<string name="no_services" msgid="2085012960886321920">"सक्रिय नाहीत"</string>
<string name="runningservicedetails_services_title" msgid="5890094559748633615">"सेवा"</string>
<string name="runningservicedetails_processes_title" msgid="5496507383850423763">"प्रक्रिया"</string>
@@ -1939,8 +1939,8 @@
<string name="process_service_in_use_description" msgid="2253782391122637651">"<xliff:g id="COMP_NAME">%1$s</xliff:g> सेवा वापरात आहे."</string>
<string name="process_provider_in_use_description" msgid="7841332986505618569">"<xliff:g id="COMP_NAME">%1$s</xliff:g> प्रदाता वापरात आहे."</string>
<string name="runningservicedetails_stop_dlg_title" msgid="6022380394950336262">"सिस्टम सेवा थांबवायची?"</string>
- <string name="runningservicedetails_stop_dlg_text" product="tablet" msgid="7619909495973395025">"तुम्ही ही सेवा थांबविल्यास, तुम्ही तीचा पॉवर बंद करून पुन्हा चालू करेपर्यंत आपल्या टॅब्लेटची काही वैशिष्ट्ये योग्यरितीने कार्य करणे थांबवू शकतात."</string>
- <string name="runningservicedetails_stop_dlg_text" product="default" msgid="8168850859827213988">"तुम्ही ही सेवा थांबविल्यास, तुम्ही तीचा पॉवर बंद करून पुन्हा चालू करेपर्यंत आपल्या टॅब्लेटची काही वैशिष्ट्ये योग्यरितीने कार्य करणे थांबवू शकतात."</string>
+ <string name="runningservicedetails_stop_dlg_text" product="tablet" msgid="7619909495973395025">"तुम्ही ही सेवा थांबविल्यास, तुम्ही तीचा पॉवर बंद करून पुन्हा सुरू करेपर्यंत आपल्या टॅब्लेटची काही वैशिष्ट्ये योग्यरितीने कार्य करणे थांबवू शकतात."</string>
+ <string name="runningservicedetails_stop_dlg_text" product="default" msgid="8168850859827213988">"तुम्ही ही सेवा थांबविल्यास, तुम्ही तीचा पॉवर बंद करून पुन्हा सुरू करेपर्यंत आपल्या टॅब्लेटची काही वैशिष्ट्ये योग्यरितीने कार्य करणे थांबवू शकतात."</string>
<string name="language_input_gesture_title" msgid="7547999017999159601">"भाषा, इनपुट आणि जेश्चर"</string>
<string name="language_input_gesture_summary_on_with_assist" msgid="315262339899294132"></string>
<string name="language_input_gesture_summary_on_non_assist" msgid="6054599939153669225"></string>
@@ -2060,12 +2060,12 @@
<string name="accessibility_screen_magnification_short_summary" msgid="5698545174944494486">"झूम करण्यासाठी 3 वेळा टॅप करा"</string>
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="5418767043532322397">"झूम करण्यासाठी बटणावर टॅप करा"</string>
<string name="accessibility_screen_magnification_summary" msgid="3363006902079431772"><b>"झूम करण्यासाठी"</b>", स्क्रीनवर 3 वेळा पटपट टॅप करा.\n"<ul><li>"स्क्रोल करण्यासाठी 2 किंवा अधिक बोटांनी ड्रॅग करा"</li>\n<li>"झूम ॲडजस्ट करण्यासाठी 2 किंवा अधिक बोटांनी पिंच करा"</li></ul>\n\n<b>"तात्पुरते झूम करण्यासाठी"</b>", स्क्रीनवर 3 वेळा पटपट टॅप करा आणि तिसर्या टॅपवर तुमचे बोट धरून ठेवा.\n"<ul><li>"स्क्रीनवर इथेतिथे जाण्यासाठी ड्रॅग करा"</li>\n<li>"झूम कमी करण्यासाठी बोट उचला"</li></ul>\n\n"तुम्ही कीबोर्ड किंवा नेव्हिगेशन बारचा झूम वाढवू शकत नाही."</string>
- <string name="accessibility_screen_magnification_navbar_summary" msgid="4726360285256503132">"मॅग्निफिकेशन चालू केले असताना, त्वरित मोठे करण्यासाठी, स्क्रीनच्या तळाशी असलेले प्रवेशयोग्यता बटण वापरा.\n\n"<b>"झूम करण्यासाठी"</b>", प्रवेशयोग्यता बटण टॅप करा, नंतर स्क्रीनवर कुठेही टॅप करा.\n"<ul><li>"स्क्रोल करण्यासाठी 2 किंवा अधिक बोटे ड्रॅग करा"</li>\n<li>"झूम समायोजित करण्यासाठी 2 किंवा अधिक बोटे पिंच करा"</li></ul>\n\n<b>"तात्पुरते झूम करण्यासाठी"</b>", प्रवेशयोग्यता बटण दाबा, नंतर स्क्रीनवर कुठेही स्पर्श करा आणि धरून ठेवा.\n"<ul><li>"स्क्रीनवर अवतीभवती हलवण्यासाठी ड्रॅग करा"</li>\n<li>"झूम कमी करण्यासाठी बोट उचला"</li></ul>\n\n"आपण कीबोर्ड किंवा नेव्हिगेशन बारचा झूम वाढवू शकत नाही."</string>
+ <string name="accessibility_screen_magnification_navbar_summary" msgid="4726360285256503132">"मॅग्निफिकेशन सुरू केले असताना, त्वरित मोठे करण्यासाठी, स्क्रीनच्या तळाशी असलेले प्रवेशयोग्यता बटण वापरा.\n\n"<b>"झूम करण्यासाठी"</b>", प्रवेशयोग्यता बटण टॅप करा, नंतर स्क्रीनवर कुठेही टॅप करा.\n"<ul><li>"स्क्रोल करण्यासाठी 2 किंवा अधिक बोटे ड्रॅग करा"</li>\n<li>"झूम समायोजित करण्यासाठी 2 किंवा अधिक बोटे पिंच करा"</li></ul>\n\n<b>"तात्पुरते झूम करण्यासाठी"</b>", प्रवेशयोग्यता बटण दाबा, नंतर स्क्रीनवर कुठेही स्पर्श करा आणि धरून ठेवा.\n"<ul><li>"स्क्रीनवर अवतीभवती हलवण्यासाठी ड्रॅग करा"</li>\n<li>"झूम कमी करण्यासाठी बोट उचला"</li></ul>\n\n"आपण कीबोर्ड किंवा नेव्हिगेशन बारचा झूम वाढवू शकत नाही."</string>
<string name="accessibility_screen_magnification_navbar_configuration_warning" msgid="6477234309484795550">"प्रवेशयोग्यता बटण <xliff:g id="SERVICE">%1$s</xliff:g> वर सेट केले आहे. मॅग्निफिकेशन वापरण्यासाठी, प्रवेशयोग्यता बटणाला स्पर्श करा आणि धरून ठेवा, नंतर मॅग्निफिकेशन निवडा."</string>
<string name="accessibility_global_gesture_preference_title" msgid="3842279082831426816">"आवाज की शॉर्टकट"</string>
<string name="accessibility_shortcut_service_title" msgid="3516052294376744060">"शॉर्टकट सेवा"</string>
<string name="accessibility_shortcut_service_on_lock_screen_title" msgid="1279441617927949980">"लॉक स्क्रीनवरून अनुमती द्या"</string>
- <string name="accessibility_shortcut_description" msgid="1427049334225166395">"शॉर्टकट चालू असताना, प्रवेशयोग्यता वैशिष्ट्य सुरू करण्यासाठी तुम्ही आवाज बटणे 3 सेकंद दाबू शकता."</string>
+ <string name="accessibility_shortcut_description" msgid="1427049334225166395">"शॉर्टकट सुरू असताना, प्रवेशयोग्यता वैशिष्ट्य सुरू करण्यासाठी तुम्ही आवाज बटणे 3 सेकंद दाबू शकता."</string>
<string name="accessibility_toggle_high_text_contrast_preference_title" msgid="5652244684961877255">"उच्च कॉंट्रास्ट मजकूर"</string>
<string name="accessibility_toggle_screen_magnification_auto_update_preference_title" msgid="2466317284195934003">"स्क्रीन विस्तृतीकरण स्वयं अद्ययावत करा"</string>
<string name="accessibility_toggle_screen_magnification_auto_update_preference_summary" msgid="6625473745911276917">"अॅप संक्रमणांवर स्क्रीन विस्तृतीकरण अद्ययावत करा"</string>
@@ -2110,7 +2110,7 @@
<item quantity="other"> सेव्ह केलेली <xliff:g id="NUMBER_DEVICE_COUNT_1">%1$d</xliff:g> श्रवणयंत्रे</item>
<item quantity="one"> सेव्ह केलेले <xliff:g id="NUMBER_DEVICE_COUNT_0">%1$d</xliff:g> श्रवणयंत्र</item>
</plurals>
- <string name="accessibility_summary_state_enabled" msgid="7357731696603247963">"चालू"</string>
+ <string name="accessibility_summary_state_enabled" msgid="7357731696603247963">"सुरू"</string>
<string name="accessibility_summary_state_disabled" msgid="9197369047683087620">"बंद"</string>
<string name="accessibility_summary_state_stopped" msgid="3170264683616172746">"काम करत नाही आहे. माहितीसाठी टॅप करा."</string>
<string name="accessibility_description_state_stopped" msgid="7666178628053039493">"या सेवेमध्ये बिघाड आहे."</string>
@@ -2181,11 +2181,11 @@
<string name="enable_service_title" msgid="2746143093464928251">"<xliff:g id="SERVICE">%1$s</xliff:g> वापरायचे?"</string>
<string name="capabilities_list_title" msgid="8177719542886123788">"यासाठी <xliff:g id="SERVICE">%1$s</xliff:g> आवश्यक आहे:"</string>
<string name="touch_filtered_warning" msgid="3072665526993043879">"अॅप परवानगी विनंती अस्पष्ट करीत असल्याने, सेटिंग्ज आपल्या प्रतिसादाची पडताळणी करू शकत नाहीत."</string>
- <string name="enable_service_encryption_warning" msgid="3580275420826492351">"तुम्ही <xliff:g id="SERVICE">%1$s</xliff:g> चालू केल्यास, तुमचे डिव्हाइस डेटा एंक्रिप्शन वर्धित करण्यासाठी तुमचे स्क्रीन लॉक वापरणार नाही."</string>
- <string name="secure_lock_encryption_warning" msgid="8724670910924531152">"तुम्ही ॲक्सेसयोग्यता सेवा चालू केली असल्यामुळे, तुमचे डिव्हाइस डेटा एंक्रिप्शन वर्धित करण्यासाठी तुमचे स्क्रीन लॉक वापरणार नाही."</string>
- <string name="enable_service_pattern_reason" msgid="7415969807374459848">"<xliff:g id="SERVICE">%1$s</xliff:g> चालू करण्यामुळे डेटा एंक्रिप्शनवर परिणाम होतो, तुम्हाला तुमच्या पॅटर्नची पुष्टी करण्याची आवश्यकता आहे."</string>
- <string name="enable_service_pin_reason" msgid="2899057249007636608">"<xliff:g id="SERVICE">%1$s</xliff:g> चालू करण्याने एंक्रिप्शन डेटा प्रभावित होतो, तुम्हाला तुमच्या पिन ची पुष्टी करण्याची आवश्यकता आहे."</string>
- <string name="enable_service_password_reason" msgid="5210815233227388083">"<xliff:g id="SERVICE">%1$s</xliff:g> चालू करण्यामुळे डेटा एंक्रिप्शनवर परिणाम होतो, तुम्हाला तुमच्या पासवर्डची पुष्टी करण्याची आवश्यकता आहे."</string>
+ <string name="enable_service_encryption_warning" msgid="3580275420826492351">"तुम्ही <xliff:g id="SERVICE">%1$s</xliff:g> सुरू केल्यास, तुमचे डिव्हाइस डेटा एंक्रिप्शन वर्धित करण्यासाठी तुमचे स्क्रीन लॉक वापरणार नाही."</string>
+ <string name="secure_lock_encryption_warning" msgid="8724670910924531152">"तुम्ही ॲक्सेसयोग्यता सेवा सुरू केली असल्यामुळे, तुमचे डिव्हाइस डेटा एंक्रिप्शन वर्धित करण्यासाठी तुमचे स्क्रीन लॉक वापरणार नाही."</string>
+ <string name="enable_service_pattern_reason" msgid="7415969807374459848">"<xliff:g id="SERVICE">%1$s</xliff:g> सुरू करण्यामुळे डेटा एंक्रिप्शनवर परिणाम होतो, तुम्हाला तुमच्या पॅटर्नची पुष्टी करण्याची आवश्यकता आहे."</string>
+ <string name="enable_service_pin_reason" msgid="2899057249007636608">"<xliff:g id="SERVICE">%1$s</xliff:g> सुरू करण्याने एंक्रिप्शन डेटा प्रभावित होतो, तुम्हाला तुमच्या पिन ची पुष्टी करण्याची आवश्यकता आहे."</string>
+ <string name="enable_service_password_reason" msgid="5210815233227388083">"<xliff:g id="SERVICE">%1$s</xliff:g> सुरू करण्यामुळे डेटा एंक्रिप्शनवर परिणाम होतो, तुम्हाला तुमच्या पासवर्डची पुष्टी करण्याची आवश्यकता आहे."</string>
<string name="accessibility_service_warning" msgid="345702253188068806">"<xliff:g id="SERVICE">%1$s</xliff:g>या डिव्हाइसच्या पूर्ण नियंत्रणासाठी विनंती करत आहे. सेवा स्क्रीन रीड करू शकते आणि अॅक्सेसिबिलिटीच्या गरजा असलेल्या वापरकर्त्यांच्या वतीने कृती करू शकते. नियंत्रणाची ही पातळी बहुतांश अॅप्ससाठी योग्य नाही."</string>
<string name="disable_service_title" msgid="6234243399949005825">"<xliff:g id="SERVICE">%1$s</xliff:g> थांबवायचे?"</string>
<string name="disable_service_message" msgid="4250593674885651779">"ठीक आहेवर टॅप करण्यामुळे <xliff:g id="SERVICE">%1$s</xliff:g> थांबेल."</string>
@@ -2196,8 +2196,8 @@
<string name="print_settings" msgid="7886184656544483072">"प्रिंट"</string>
<string name="print_settings_summary_no_service" msgid="634173687975841526">"बंद"</string>
<plurals name="print_settings_summary" formatted="false" msgid="7580293760281445137">
- <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> प्रिंट सेवा चालू</item>
- <item quantity="one">1 प्रिंट सेवा चालू</item>
+ <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> प्रिंट सेवा सुरू</item>
+ <item quantity="one">1 प्रिंट सेवा सुरू</item>
</plurals>
<plurals name="print_jobs_summary" formatted="false" msgid="6180308415569432845">
<item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> प्रिंट कार्ये</item>
@@ -2243,25 +2243,25 @@
<string name="background_activity_disabled_dialog_text" msgid="4234598000779459640">"हे अॅप बॅटरी ऑप्टिमाइझ करण्यासाठी सेट केलेले नसल्याने, तुम्ही ते प्रतिबंधित करू शकत नाही.\n\nअॅप प्रतिबंधित करण्यासाठी, प्रथम बॅटरी ऑप्टिमायझेशन सुरू करा"</string>
<string name="device_screen_usage" msgid="4470485475363132750">"पूर्ण चार्ज झाल्यानंतरचा स्क्रीन वापर"</string>
<string name="power_usage_list_summary" msgid="4314438658308211057">"पूर्ण चार्ज केल्यापासूनचा बॅटरी वापर"</string>
- <string name="screen_usage_summary" msgid="263396144684078341">"पूर्ण चार्जपासून स्क्रीन चालू असण्याच्या वेळाचे प्रमाण"</string>
+ <string name="screen_usage_summary" msgid="263396144684078341">"पूर्ण चार्जपासून स्क्रीन सुरू असण्याच्या वेळाचे प्रमाण"</string>
<string name="device_usage_list_summary" msgid="8299017481332816368">"शेवटच्या पूर्ण चार्जपासून डिव्हाइस वापर"</string>
<string name="battery_since_unplugged" msgid="6486555910264026856">"अनप्लग केल्यापासून बॅटरी वापर"</string>
<string name="battery_since_reset" msgid="4747587791838336661">"रीसेट केल्यापासून बॅटरी वापर"</string>
<string name="battery_stats_on_battery" msgid="2644055304085279716">"बॅटरीवरील <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="battery_stats_duration" msgid="4867858933068728005">"अनप्लग केल्यापासून <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="battery_stats_charging_label" msgid="3156586822576998231">"चार्ज होत आहे"</string>
- <string name="battery_stats_screen_on_label" msgid="1223495366609581497">"स्क्रीन चालू"</string>
- <string name="battery_stats_gps_on_label" msgid="3944533098574423359">"GPS चालू"</string>
- <string name="battery_stats_camera_on_label" msgid="557892808497848886">"कॅमेरा चालू"</string>
- <string name="battery_stats_flashlight_on_label" msgid="162279812156241905">"फ्लॅशलाइट चालू"</string>
+ <string name="battery_stats_screen_on_label" msgid="1223495366609581497">"स्क्रीन सुरू"</string>
+ <string name="battery_stats_gps_on_label" msgid="3944533098574423359">"GPS सुरू"</string>
+ <string name="battery_stats_camera_on_label" msgid="557892808497848886">"कॅमेरा सुरू"</string>
+ <string name="battery_stats_flashlight_on_label" msgid="162279812156241905">"फ्लॅशलाइट सुरू"</string>
<string name="battery_stats_wifi_running_label" msgid="3223557320252465826">"वाय-फाय"</string>
<string name="battery_stats_wake_lock_label" msgid="670884103452713535">"सक्रिय"</string>
<string name="battery_stats_phone_signal_label" msgid="2502589944816260503">"मोबाईल नेटवर्क सिग्नल"</string>
<!-- no translation found for battery_stats_last_duration (8190573267292309839) -->
<skip />
<string name="awake" msgid="8956720170442161285">"डिव्हाइस ॲक्टिव्हेट होण्याची वेळ"</string>
- <string name="wifi_on_time" msgid="2487820618265936068">"वाय-फाय चालू केल्याची वेळ"</string>
- <string name="bluetooth_on_time" msgid="6400569492287292639">"वाय-फाय चालू केल्याची वेळ"</string>
+ <string name="wifi_on_time" msgid="2487820618265936068">"वाय-फाय सुरू केल्याची वेळ"</string>
+ <string name="bluetooth_on_time" msgid="6400569492287292639">"वाय-फाय सुरू केल्याची वेळ"</string>
<string name="advanced_battery_title" msgid="5026866913848464170">"बॅटरी वापर"</string>
<string name="history_details_title" msgid="8608193822257799936">"इतिहास तपशील"</string>
<string name="battery_details_title" msgid="5358230551490703067">"बॅटरी वापर"</string>
@@ -2277,8 +2277,8 @@
<string name="battery_tip_smart_battery_title" product="default" msgid="5517122075918038665">"तुमच्या फोनचे बॅटरी लाइफ सुधारा"</string>
<string name="battery_tip_smart_battery_title" product="tablet" msgid="203494973250969040">"तुमच्या टॅबलेटचे बॅटरी लाइफ सुधारा"</string>
<string name="battery_tip_smart_battery_title" product="device" msgid="7419448992583346364">"तुमच्या डिव्हाइसचे बॅटरी लाइफ सुधारा"</string>
- <string name="battery_tip_smart_battery_summary" msgid="5344821856478265778">"बॅटरी व्यवस्थापक चालू करा"</string>
- <string name="battery_tip_early_heads_up_title" msgid="707163785378746813">"बॅटरी सेव्हर चालू करा"</string>
+ <string name="battery_tip_smart_battery_summary" msgid="5344821856478265778">"बॅटरी व्यवस्थापक सुरू करा"</string>
+ <string name="battery_tip_early_heads_up_title" msgid="707163785378746813">"बॅटरी सेव्हर सुरू करा"</string>
<string name="battery_tip_early_heads_up_summary" msgid="4231489566422395156">"बॅटरी नेहमीपेक्षा लवकर संपू शकते"</string>
<string name="battery_tip_early_heads_up_done_title" msgid="112550885882648429">"बॅटरी सेव्हर सुरू आहे"</string>
<string name="battery_tip_early_heads_up_done_summary" msgid="8692257022962771181">"काही वैशिष्ट्ये मर्यादित असू शकतात"</string>
@@ -2303,8 +2303,8 @@
<item quantity="one">%1$s चा बॅकग्राउंड बॅटरी वापर जास्त आहे</item>
</plurals>
<plurals name="battery_tip_restrict_handled_summary" formatted="false" msgid="469696766640020557">
- <item quantity="other">ही अॅप्स बॅकग्राउंडमध्ये चालू शकत नाहीत</item>
- <item quantity="one">हे अॅप बॅकग्राउंडमध्ये चालू शकत नाही</item>
+ <item quantity="other">ही अॅप्स बॅकग्राउंडमध्ये सुरू शकत नाहीत</item>
+ <item quantity="one">हे अॅप बॅकग्राउंडमध्ये सुरू शकत नाही</item>
</plurals>
<plurals name="battery_tip_restrict_app_dialog_title" formatted="false" msgid="3042021435866172168">
<item quantity="other">%1$d अॅप्स प्रतिबंधित करायची?</item>
@@ -2388,7 +2388,7 @@
<string name="usage_type_video" msgid="8161701367674306793">"व्हिडिओ"</string>
<string name="usage_type_camera" msgid="2276450385733155264">"कॅमेरा"</string>
<string name="usage_type_flashlight" msgid="954750302897154167">"फ्लॅशलाइट"</string>
- <string name="usage_type_on_time" msgid="4622180623970638221">"वेळ चालू"</string>
+ <string name="usage_type_on_time" msgid="4622180623970638221">"वेळ सुरू"</string>
<string name="usage_type_no_coverage" msgid="6032663899998431817">"सिग्नलशिवायची वेळ"</string>
<string name="usage_type_total_battery_capacity" msgid="1954889791720119945">"एकूण बॅटरी क्षमता"</string>
<string name="usage_type_computed_power" msgid="2594890316149868151">"गणना केलेला पॉवर वापर"</string>
@@ -2448,7 +2448,7 @@
<string name="process_mediaserver_label" msgid="8591722404282619153">"मीडियासर्व्हर"</string>
<string name="process_dex2oat_label" msgid="8249082119748556085">"अॅप ऑप्टिमायझेशन"</string>
<string name="battery_saver" msgid="3989710213758938398">"बॅटरी सेव्हर"</string>
- <string name="battery_saver_auto_title" msgid="4158659069641849952">"आपोआप चालू करा"</string>
+ <string name="battery_saver_auto_title" msgid="4158659069641849952">"आपोआप सुरू करा"</string>
<string name="battery_saver_auto_no_schedule" msgid="739814529432092706">"कोणतेही शेड्युल नाही"</string>
<string name="battery_saver_auto_routine" msgid="886514412067906980">"तुमच्या दिनक्रमावर आधारित"</string>
<string name="battery_saver_auto_percentage" msgid="5791982309331921556">"टक्केवारीवर आधारित"</string>
@@ -2463,7 +2463,7 @@
<skip />
<string name="battery_saver_seekbar_title_placeholder" msgid="2321082163892561703">"सुरू करा"</string>
<string name="battery_saver_master_switch_title" msgid="8241862826825517212">"बॅटरी सेव्हर वापरा"</string>
- <string name="battery_saver_turn_on_automatically_title" msgid="7316920304024245838">"स्वयंचलितपणे चालू करा"</string>
+ <string name="battery_saver_turn_on_automatically_title" msgid="7316920304024245838">"स्वयंचलितपणे सुरू करा"</string>
<string name="battery_saver_turn_on_automatically_never" msgid="2623381258359775227">"कधीही नाही"</string>
<string name="battery_saver_turn_on_automatically_pct" msgid="434270432432390307">"<xliff:g id="PERCENT">%1$s</xliff:g>बॅटरीवर"</string>
<string name="battery_percentage" msgid="7782252476471033843">"बॅटरी टक्केवारी"</string>
@@ -2509,7 +2509,7 @@
<string name="voice_service_preference_section_title" msgid="2984112696100778038">"व्हॉइस इनपुट सेवा"</string>
<string name="voice_interactor_preference_summary" msgid="7321365727286121067">"पूर्ण हॉटवर्ड आणि परस्परसंवाद"</string>
<string name="voice_recognizer_preference_summary" msgid="3681161319745912594">"मजकूर पाठविण्यासाठी सोपे उच्चारण"</string>
- <string name="voice_interaction_security_warning" msgid="4986261746316889768">"आपल्या वतीने व्हॉइस परीक्षण नेहमी-चालू कार्यप्रदर्शन करण्यासाठी आणि व्हॉइस सक्षम ॲप्लिकेशन नियंत्रित करण्यासाठी व्हॉइस इनपुट सेवा सक्षम असेल. हे <xliff:g id="VOICE_INPUT_SERVICE_APP_NAME">%s</xliff:g> ॲप्लिकेशनावरून येते. या सेवेचा वापर सक्षम करायचा?"</string>
+ <string name="voice_interaction_security_warning" msgid="4986261746316889768">"आपल्या वतीने व्हॉइस परीक्षण नेहमी-सुरू कार्यप्रदर्शन करण्यासाठी आणि व्हॉइस सक्षम ॲप्लिकेशन नियंत्रित करण्यासाठी व्हॉइस इनपुट सेवा सक्षम असेल. हे <xliff:g id="VOICE_INPUT_SERVICE_APP_NAME">%s</xliff:g> ॲप्लिकेशनावरून येते. या सेवेचा वापर सक्षम करायचा?"</string>
<string name="tts_engine_preference_title" msgid="1183116842356275061">"प्राधान्य इंजिन"</string>
<string name="tts_engine_settings_title" msgid="4079757915136562358">"इंजिन सेटिंग्ज"</string>
<string name="tts_sliders_title" msgid="1927481069989092278">"भाषण गती आणि पिच"</string>
@@ -2564,7 +2564,7 @@
<string name="backup_erase_dialog_title" msgid="8178424339104463014"></string>
<string name="backup_erase_dialog_message" msgid="8767843355330070902">"Google सर्व्हरवरील आपल्या वाय-फाय पासवर्ड, बुकमार्क, इतर सेटिंग्ज आणि अॅप डेटाचा बॅक अप घेणे थांबवायचे तसेच सर्व प्रती मिटवायच्या?"</string>
<string name="fullbackup_erase_dialog_message" msgid="2588536036471144070">"डिव्हाइस डेटाचा (जसे की वाय-फाय पासवर्ड आणि कॉल इतिहास) आणि (अॅप्सद्वारे स्टोअर केलेल्या सेटिंग्ज आणि फायली यासारख्या) अॅप डेटाचा बॅकअप घेणे थांबवायचे, तसेच दूरस्थ सर्व्हर वरील सर्व प्रती मिटवायच्या?"</string>
- <string name="fullbackup_data_summary" msgid="406274198094268556">"आपोआप डिव्हाइस डेटाचा (जसे की वाय-फाय पासवर्ड आणि कॉल इतिहास) आणि अॅप डेटाचा (जसे की अॅप्स द्वारे स्टोअर केलेल्या सेटिंग्ज आणि फायली) दूरस्थपणे बॅकअप घ्या.\n\nतुम्ही स्वयंचलित बॅकअप चालू करता तेव्हा, डिव्हाइस आणि अॅप डेटा ठराविक कालावधीने दूरस्थपणे सेव्ह केला जातो. अॅप डेटा हा संपर्क, मेसेज आणि फोटो यासारख्या संभाव्य संवेदनशील डेटासह अॅपने सेव्ह केलेला (डेव्हलपरच्या सेटिंग्जवर आधारित) कोणताही डेटा असू शकतो."</string>
+ <string name="fullbackup_data_summary" msgid="406274198094268556">"आपोआप डिव्हाइस डेटाचा (जसे की वाय-फाय पासवर्ड आणि कॉल इतिहास) आणि अॅप डेटाचा (जसे की अॅप्स द्वारे स्टोअर केलेल्या सेटिंग्ज आणि फायली) दूरस्थपणे बॅकअप घ्या.\n\nतुम्ही स्वयंचलित बॅकअप सुरू करता तेव्हा, डिव्हाइस आणि अॅप डेटा ठराविक कालावधीने दूरस्थपणे सेव्ह केला जातो. अॅप डेटा हा संपर्क, मेसेज आणि फोटो यासारख्या संभाव्य संवेदनशील डेटासह अॅपने सेव्ह केलेला (डेव्हलपरच्या सेटिंग्जवर आधारित) कोणताही डेटा असू शकतो."</string>
<string name="device_admin_settings_title" msgid="2074319456047334589">"डिव्हाइस प्रशासक सेटिंग्ज"</string>
<string name="active_device_admin_msg" msgid="6929247869516924549">"डिव्हाइस प्रशासक अॅप"</string>
<string name="remove_device_admin" msgid="4413438593788336400">"हे डिव्हाइस अॅडमिन अॅप बंद करा"</string>
@@ -2635,7 +2635,7 @@
<string name="really_remove_account_message" product="device" msgid="3751798556257519916">"हे खाते काढल्याने त्याचे सर्व मेसेज, संपर्क आणि डिव्हाइसवरील इतर डेटा हटवला जाईल!"</string>
<string name="remove_account_failed" msgid="491458185327106966">"या बदलाला आपल्या प्रशासकाद्वारे अनुमती नाही"</string>
<string name="cant_sync_dialog_title" msgid="5483419398223189881">"व्यक्तिचलितपणे सिंक करू शकत नाही"</string>
- <string name="cant_sync_dialog_message" msgid="3467126947262857534">"या आयटमसाठी सध्या सिंक अक्षम केले आहे. हे सेटिंग बदलण्यासाठी, पार्श्वभूमीवरील डेटा आणि आपोआप होणारे सिंक तात्पुरते चालू करा."</string>
+ <string name="cant_sync_dialog_message" msgid="3467126947262857534">"या आयटमसाठी सध्या सिंक अक्षम केले आहे. हे सेटिंग बदलण्यासाठी, पार्श्वभूमीवरील डेटा आणि आपोआप होणारे सिंक तात्पुरते सुरू करा."</string>
<string name="enter_password" msgid="2963496904625715235">"Android प्रारंभ करण्यासाठी, तुमचा पासवर्ड प्रविष्ट करा"</string>
<string name="enter_pin" msgid="7140938268709546890">"Android प्रारंभ करण्यासाठी, तुमचा पिन प्रविष्ट करा"</string>
<string name="enter_pattern" msgid="1653841963422825336">"Android प्रारंभ करण्यासाठी, आपल्या नमुन्याची रेखाटणी करा"</string>
@@ -2733,7 +2733,7 @@
<string name="data_usage_metered_body" msgid="1342905101297753439">"पार्श्वभूमीवरील डेटा प्रतिबंधित असताना मीटर केलेली नेटवर्क मोबाइल नेटवर्कप्रमाणे वापरली जातात. मोठ्या डाउनलोडसाठी ही नेटवर्क वापरण्यापूर्वी अॅप्सकडून चेतावणी मिळू शकते."</string>
<string name="data_usage_metered_mobile" msgid="3675591449158207593">"मोबाईल नेटवर्क"</string>
<string name="data_usage_metered_wifi" msgid="2955256408132426720">"मीटर केलेली वाय-फाय नेटवर्क"</string>
- <string name="data_usage_metered_wifi_disabled" msgid="5771083253782103415">"मीटर केलेली नेटवर्क निवडण्यासाठी, वाय-फाय चालू करा."</string>
+ <string name="data_usage_metered_wifi_disabled" msgid="5771083253782103415">"मीटर केलेली नेटवर्क निवडण्यासाठी, वाय-फाय सुरू करा."</string>
<string name="data_usage_metered_auto" msgid="7924116401382629319">"स्वयंचलित"</string>
<string name="data_usage_metered_yes" msgid="7333744880035386073">"मर्यादित डेटा वापराचे नेटवर्क"</string>
<string name="data_usage_metered_no" msgid="1961524615778610008">"मीटरने मोजले नाही"</string>
@@ -2761,10 +2761,10 @@
<string name="vpn_no_ca_cert" msgid="486605757354800838">"(सर्व्हर सत्यापित करू नका)"</string>
<string name="vpn_no_server_cert" msgid="679622228649855629">"(सर्व्हरवरुन प्राप्त झालेले)"</string>
<string name="vpn_always_on_invalid_reason_type" msgid="165810330614905489">"हा VPN प्रकार सर्व वेळी कनेक्ट केलेला राहू शकत नाही"</string>
- <string name="vpn_always_on_invalid_reason_server" msgid="3864424127328210700">"नेहमी-चालू VPN केवळ अंकीय सर्व्हर पत्त्यांना समर्थित करतात"</string>
- <string name="vpn_always_on_invalid_reason_no_dns" msgid="3814114757059738225">"नेहमी-चालू VPN साठी DNS सर्व्हर नमूद करणे आवश्यक आहे"</string>
- <string name="vpn_always_on_invalid_reason_dns" msgid="501388894176868973">"नेहमी-चालू VPN साठी DNS सर्व्हर पत्ते अंकीय असणे आवश्यक आहे"</string>
- <string name="vpn_always_on_invalid_reason_other" msgid="8504512156730364447">"एंटर केलेली माहिती नेहमी-चालू VPN ला समर्थित करत नाही"</string>
+ <string name="vpn_always_on_invalid_reason_server" msgid="3864424127328210700">"नेहमी-सुरू VPN केवळ अंकीय सर्व्हर पत्त्यांना समर्थित करतात"</string>
+ <string name="vpn_always_on_invalid_reason_no_dns" msgid="3814114757059738225">"नेहमी-सुरू VPN साठी DNS सर्व्हर नमूद करणे आवश्यक आहे"</string>
+ <string name="vpn_always_on_invalid_reason_dns" msgid="501388894176868973">"नेहमी-सुरू VPN साठी DNS सर्व्हर पत्ते अंकीय असणे आवश्यक आहे"</string>
+ <string name="vpn_always_on_invalid_reason_other" msgid="8504512156730364447">"एंटर केलेली माहिती नेहमी-सुरू VPN ला समर्थित करत नाही"</string>
<string name="vpn_cancel" msgid="440645172381062337">"रद्द करा"</string>
<string name="vpn_done" msgid="6314426362224527349">"डिसमिस करा"</string>
<string name="vpn_save" msgid="1332625259182278316">"सेव्ह करा"</string>
@@ -2778,14 +2778,14 @@
<string name="vpn_version" msgid="2006792987077940456">"आवृत्ती <xliff:g id="VERSION">%s</xliff:g>"</string>
<string name="vpn_forget_long" msgid="8457511440635534478">"VPN विसरा"</string>
<string name="vpn_replace_vpn_title" msgid="8517436922021598103">"विद्यमान VPN पुनर्स्थित करायचे?"</string>
- <string name="vpn_set_vpn_title" msgid="6483554732067951052">"नेहमी-चालू VPN सेट करायचे?"</string>
- <string name="vpn_first_always_on_vpn_message" msgid="7050017738816963855">"हे सेटिंग चालू असताना, VPN यशस्वीरीत्या कनेक्ट करेपर्यंत तुमच्याकडे इंटरनेट कनेक्शन असणार नाही"</string>
+ <string name="vpn_set_vpn_title" msgid="6483554732067951052">"नेहमी-सुरू VPN सेट करायचे?"</string>
+ <string name="vpn_first_always_on_vpn_message" msgid="7050017738816963855">"हे सेटिंग सुरू असताना, VPN यशस्वीरीत्या कनेक्ट करेपर्यंत तुमच्याकडे इंटरनेट कनेक्शन असणार नाही"</string>
<string name="vpn_replace_always_on_vpn_enable_message" msgid="4149931501300203205">"तुमचे सद्य VPN बदलले जाईल आणि VPN यशस्वीरित्या कनेक्ट करेपर्यंत तुमच्याकडे इंटरनेट कनेक्शन असणार नाही"</string>
- <string name="vpn_replace_always_on_vpn_disable_message" msgid="4924947523200883088">"तुम्ही आधीपासून नेहमी-चालू VPN शी कनेक्ट केले आहे. तुम्ही एका भिन्न VPN शी कनेक्ट केल्यास, तुमचे विद्यमान VPN पुनर्स्थित केले जाईल आणि नेहमी-चालू मोड बंद होईल."</string>
+ <string name="vpn_replace_always_on_vpn_disable_message" msgid="4924947523200883088">"तुम्ही आधीपासून नेहमी-सुरू VPN शी कनेक्ट केले आहे. तुम्ही एका भिन्न VPN शी कनेक्ट केल्यास, तुमचे विद्यमान VPN पुनर्स्थित केले जाईल आणि नेहमी-सुरू मोड बंद होईल."</string>
<string name="vpn_replace_vpn_message" msgid="8009433728523145393">"तुम्ही आधीपासून एका VPN शी कनेक्ट केले आहे. तुम्ही भिन्न VPN शी कनेक्ट केल्यास, तुमचे विद्यमान VPN बदलले जाईल."</string>
- <string name="vpn_turn_on" msgid="2334736319093953055">"चालू करा"</string>
+ <string name="vpn_turn_on" msgid="2334736319093953055">"सुरू करा"</string>
<string name="vpn_cant_connect_title" msgid="5803347131129293771">"<xliff:g id="VPN_NAME">%1$s</xliff:g> कनेक्ट करू शकत नाही"</string>
- <string name="vpn_cant_connect_message" msgid="7729125036551401236">"हे अॅप नेहमी-चालू VPN ला समर्थित करत नाही"</string>
+ <string name="vpn_cant_connect_message" msgid="7729125036551401236">"हे अॅप नेहमी-सुरू VPN ला समर्थित करत नाही"</string>
<string name="vpn_title" msgid="7801918186865029203">"VPN"</string>
<string name="vpn_create" msgid="2477570636472897359">"VPN प्रोफाइल जोडा"</string>
<string name="vpn_menu_edit" msgid="8061437799373333593">"प्रोफाईल संपादित करा"</string>
@@ -2794,12 +2794,12 @@
<string name="vpn_no_vpns_added" msgid="6616183541896197147">"कोणतेही VPN जोडलेले नाहीत"</string>
<string name="vpn_always_on_summary" msgid="3639994551631437397">"VPN शी नेहमी कनेक्ट केलेले रहा"</string>
<string name="vpn_always_on_summary_not_supported" msgid="9077720997795965133">"या ॲपद्वारे समर्थित नाही"</string>
- <string name="vpn_always_on_summary_active" msgid="8962619701962239088">"नेहमी-चालू सक्रिय"</string>
+ <string name="vpn_always_on_summary_active" msgid="8962619701962239088">"नेहमी-सुरू सक्रिय"</string>
<string name="vpn_require_connection" msgid="5413746839457797350">"VPN शिवायची कनेक्शन ब्लॉक करा"</string>
<string name="vpn_require_connection_title" msgid="8361434328767853717">"VPN कनेक्शन आवश्यक आहे?"</string>
<string name="vpn_lockdown_summary" msgid="6770030025737770861">"नेहमी कनेक्ट केलेले राहण्यासाठी एक VPN प्रोफाईल निवडा. केवळ या VPN शी कनेक्ट केलेले असताना नेटवर्क रहदारीला अनुमती दिली जाईल."</string>
<string name="vpn_lockdown_none" msgid="3789288793603394679">"काहीही नाही"</string>
- <string name="vpn_lockdown_config_error" msgid="8761770968704589885">"नेहमी चालू असलेल्या VPN ला सर्व्हर आणि DNS दोन्हीसाठी एका IP पत्त्याची आवश्यकता आहे."</string>
+ <string name="vpn_lockdown_config_error" msgid="8761770968704589885">"नेहमी सुरू असलेल्या VPN ला सर्व्हर आणि DNS दोन्हीसाठी एका IP पत्त्याची आवश्यकता आहे."</string>
<string name="vpn_no_network" msgid="8313250136194588023">"कोणतेही नेटवर्क कनेक्शन नाही. कृपया नंतर पुन्हा प्रयत्न करा."</string>
<string name="vpn_disconnected" msgid="4597953053220332539">"VPN पासून डिस्कनेक्ट झाले"</string>
<string name="vpn_disconnected_summary" msgid="3784118965271376808">"काहीही नाही"</string>
@@ -2893,7 +2893,7 @@
<string name="user_confirm_remove_self_message" product="tablet" msgid="2889456786320157545">"तुम्ही या टॅब्लेटवरील तुमचे स्थान आणि डेटा गमवाल. तुम्ही ही क्रिया पूर्ववत करु शकत नाही."</string>
<string name="user_confirm_remove_self_message" product="default" msgid="8441729423565705183">"तुम्ही या फोनवरील तुमचे स्थान आणि डेटा गमवाल. तुम्ही ही क्रिया पूर्ववत करु शकत नाही."</string>
<string name="user_confirm_remove_message" msgid="5202150470271756013">"सर्व अॅप्स आणि डेटा हटवला जाईल."</string>
- <string name="work_profile_confirm_remove_message" msgid="1220672284385083128">"तुम्ही सुरु ठेवल्यास या प्रोफाईलमधील सर्व अॅप्स आणि डेटा हटवला जाईल."</string>
+ <string name="work_profile_confirm_remove_message" msgid="1220672284385083128">"तुम्ही सुरू ठेवल्यास या प्रोफाईलमधील सर्व अॅप्स आणि डेटा हटवला जाईल."</string>
<string name="user_profile_confirm_remove_message" msgid="8376289888144561545">"सर्व अॅप्स आणि डेटा हटवला जाईल."</string>
<string name="user_adding_new_user" msgid="381717945749193417">"नवीन वापरकर्त्यास जोडत आहे…"</string>
<string name="user_delete_user_description" msgid="3627684990761268859">"वापरकर्ता हटवा"</string>
@@ -2904,7 +2904,7 @@
<string name="user_exit_guest_confirm_message" msgid="6955182181145748919">"या सत्रातील सर्व अॅप्स आणि डेटा हटवला जाईल."</string>
<string name="user_exit_guest_dialog_remove" msgid="1878866060881115716">"काढा"</string>
<string name="user_enable_calling" msgid="864760054792249503">"फोन कॉल सुरू करा"</string>
- <string name="user_enable_calling_sms" msgid="3450252891736718793">"फोन कॉल आणि SMS चालू करा"</string>
+ <string name="user_enable_calling_sms" msgid="3450252891736718793">"फोन कॉल आणि SMS सुरू करा"</string>
<string name="user_remove_user" msgid="3687544420125911166">"वापरकर्ता हटवा"</string>
<string name="user_enable_calling_confirm_title" msgid="1141612415529158542">"फोन कॉल सुरू करायचे?"</string>
<string name="user_enable_calling_confirm_message" msgid="2490126715153125970">"या वापरकर्त्याशी कॉल इतिहास शेअर केला जाईल."</string>
@@ -2937,7 +2937,7 @@
<string name="restriction_menu_change_pin" msgid="592512748243421101">"पिन बदला"</string>
<string name="app_notifications_switch_label" msgid="670683308275498821">"सूचना दर्शवा"</string>
<string name="help_label" msgid="1296484776243905646">"मदत आणि अभिप्राय"</string>
- <string name="support_summary" msgid="3278943815956130740">"मदत लेख, फोन आणि चॅट, सुरूवात करणे"</string>
+ <string name="support_summary" msgid="3278943815956130740">"मदत लेख, फोन आणि चॅट, सुरुवात करणे"</string>
<string name="user_account_title" msgid="2108666882630552859">"सामग्रीसाठी खाते"</string>
<string name="user_picture_title" msgid="6664602422948159123">"फोटो आयडी"</string>
<string name="extreme_threats_title" msgid="1405820547540456436">"अत्याधिक धोके"</string>
@@ -3161,7 +3161,7 @@
<string name="emergency_tone_silent" msgid="804809075282717882">"शांतता"</string>
<string name="emergency_tone_alert" msgid="907868135091891015">"टोन"</string>
<string name="emergency_tone_vibrate" msgid="5020068066905681181">"स्पंदने"</string>
- <string name="boot_sounds_title" msgid="7583926202411353620">"ध्वनी चालू करा"</string>
+ <string name="boot_sounds_title" msgid="7583926202411353620">"ध्वनी सुरू करा"</string>
<string name="live_caption_title" msgid="7926591158657997051">"लाइव्ह कॅप्शन"</string>
<string name="live_caption_summary" msgid="9064771862352393125">"मीडियाला आपोआप सबटायटल द्या"</string>
<string name="zen_mode_settings_summary_off" msgid="6929319200478424962">"कधीही नाही"</string>
@@ -3170,7 +3170,7 @@
<item quantity="one">एक सुरू केले</item>
</plurals>
<string name="zen_mode_settings_title" msgid="3425263414594779244">"व्यत्यय आणू नका"</string>
- <string name="zen_mode_settings_turn_on_dialog_title" msgid="3062548369931058282">"व्यत्यय आणू नका चालू करा"</string>
+ <string name="zen_mode_settings_turn_on_dialog_title" msgid="3062548369931058282">"व्यत्यय आणू नका सुरू करा"</string>
<string name="zen_mode_behavior_settings_title" msgid="423125904296667490">"अपवाद"</string>
<string name="zen_mode_duration_settings_title" msgid="5522668871014735728">"डीफॉल्ट कालावधी"</string>
<string name="zen_mode_behavior_allow_title" msgid="2440627647424280842">"यांचे ध्वनी आणि व्हायब्रेशन राहू द्या"</string>
@@ -3210,7 +3210,7 @@
<string name="zen_mode_restrict_notifications_summary_custom" msgid="4982187708274505748">"अंशतः लपवलेले"</string>
<string name="zen_mode_restrict_notifications_summary_hidden" msgid="7637206880685474111">"सूचना आल्यावर व्हिज्युअल किंवा आवाज नाही"</string>
<string name="zen_mode_what_to_block_title" msgid="2142809942549840800">"कस्टम प्रतिबंध"</string>
- <string name="zen_mode_block_effects_screen_on" msgid="1042489123800404560">"स्क्रीन चालू असताना"</string>
+ <string name="zen_mode_block_effects_screen_on" msgid="1042489123800404560">"स्क्रीन सुरू असताना"</string>
<string name="zen_mode_block_effects_screen_off" msgid="6380935819882837552">"स्क्रीन बंद असताना"</string>
<string name="zen_mode_block_effect_sound" msgid="1499243540186357631">"ध्वनी आणि व्हायब्रेट म्यूट करा"</string>
<string name="zen_mode_block_effect_intent" msgid="5666951244667422668">"स्क्रीन सुरू करू नका"</string>
@@ -3222,7 +3222,7 @@
<string name="zen_mode_block_effect_list" msgid="6081548478844912181">"सूचना सूचीमधून लपवा"</string>
<string name="zen_mode_block_effect_summary_none" msgid="7166175186759564510">"कधीही नाही"</string>
<string name="zen_mode_block_effect_summary_screen_off" msgid="2985086455557755722">"स्क्रीन बंद असताना"</string>
- <string name="zen_mode_block_effect_summary_screen_on" msgid="6183282342145215594">"स्क्रीन चालू असताना"</string>
+ <string name="zen_mode_block_effect_summary_screen_on" msgid="6183282342145215594">"स्क्रीन सुरू असताना"</string>
<string name="zen_mode_block_effect_summary_sound" msgid="4907185880913861880">"ध्वनी आणि व्हायब्रेट"</string>
<string name="zen_mode_block_effect_summary_some" msgid="6035118904496072665">"ध्वनी, व्हायब्रेट आणि काही व्हिज्युअल चिन्हांच्या काही सूचना"</string>
<string name="zen_mode_block_effect_summary_all" msgid="2830443565687247759">"सूचनांचा ध्वनी, व्हायब्रेट आणि व्हिज्युअल चिन्ह"</string>
@@ -3230,13 +3230,13 @@
<string name="zen_mode_no_exceptions" msgid="3099578343994492857">"काहीही नाही"</string>
<string name="zen_mode_other_options" msgid="7216192179063769057">"इतर पर्याय"</string>
<string name="zen_mode_add" msgid="2533484377786927366">"जोडा"</string>
- <string name="zen_mode_enable_dialog_turn_on" msgid="6396050543542026184">"चालू करा"</string>
+ <string name="zen_mode_enable_dialog_turn_on" msgid="6396050543542026184">"सुरू करा"</string>
<string name="zen_mode_button_turn_on" msgid="1097964136225943415">"आता सुरू करा"</string>
<string name="zen_mode_button_turn_off" msgid="3990967728457149454">"आता बंद करा"</string>
- <string name="zen_mode_settings_dnd_manual_end_time" msgid="4307574188962071429">"व्यत्यय आणू नका <xliff:g id="FORMATTED_TIME">%s</xliff:g> पर्यंत चालू असणार आहे"</string>
+ <string name="zen_mode_settings_dnd_manual_end_time" msgid="4307574188962071429">"व्यत्यय आणू नका <xliff:g id="FORMATTED_TIME">%s</xliff:g> पर्यंत सुरू असणार आहे"</string>
<string name="zen_mode_settings_dnd_manual_indefinite" msgid="3701005376825238752">"तुम्ही बंद करेपर्यंत व्यत्यय आणू नका सुरू राहील"</string>
<string name="zen_mode_settings_dnd_automatic_rule" msgid="2843297614114625408">"(<xliff:g id="RULE_NAME">%s</xliff:g>) शेड्युलने व्यत्यय आणू नका आपोआप सुरू केले"</string>
- <string name="zen_mode_settings_dnd_automatic_rule_app" msgid="5103454923160912313">"<xliff:g id="APP_NAME">%s</xliff:g> या ॲपने व्यत्यय आणू नका आपोआप चालू केले"</string>
+ <string name="zen_mode_settings_dnd_automatic_rule_app" msgid="5103454923160912313">"<xliff:g id="APP_NAME">%s</xliff:g> या ॲपने व्यत्यय आणू नका आपोआप सुरू केले"</string>
<string name="zen_mode_settings_dnd_custom_settings_footer" msgid="6335108298640066560">"<xliff:g id="RULE_NAMES">%s</xliff:g>साठी व्यत्यय आणू नका कस्टम सेटिंग्ज सह सुरू आहे."</string>
<string name="zen_mode_settings_dnd_custom_settings_footer_link" msgid="4007974052885089379"><annotation id="link">" कस्टम सेटिंग्ज पाहा"</annotation></string>
<string name="zen_interruption_level_priority" msgid="9178419297408319234">"केवळ प्राधान्य"</string>
@@ -3374,7 +3374,7 @@
<string name="notification_assistant_security_warning_title" msgid="4190584438086738496">"<xliff:g id="SERVICE">%1$s</xliff:g> ला सूचना अॅक्सेस करण्याची अनुमती द्यायची का?"</string>
<string name="notification_assistant_security_warning_summary" msgid="6924513399671031930">"संपर्क नावे आणि तुम्हाला येणारे एसएमएस यासारख्या वैयक्तिक माहितीच्या समावेशासह <xliff:g id="NOTIFICATION_ASSISTANT_NAME">%1$s</xliff:g> सर्व सूचना पाहू शकेल. ते त्यांच्यामधील सूचनांमध्ये बदल करू शकेल किंवा त्यांना डिसमिस करू शकेल अथवा त्यामध्ये असलेली अॅक्शन बटणे ट्रिगर करू शकेल. \n\nयामुळे ॲपला व्यत्यय आणू नका सुरू किंवा बंद करता येईल आणि संबंधित सेटिंग्ज बदलता येतील."</string>
<string name="notification_listener_security_warning_title" msgid="4902253246428777797">"<xliff:g id="SERVICE">%1$s</xliff:g> साठी सूचना प्रवेशास अनुमती द्यायची?"</string>
- <string name="notification_listener_security_warning_summary" msgid="4454702907350100288">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> तुम्ही प्राप्त करता ती संपर्क नावे आणि मजकूर मेसेज यासारख्या वैयक्तिक माहितीसह सर्व सूचना वाचण्यात सक्षम असेल. तो सूचना डिसमिस करण्यात किंवा त्यामध्ये असलेली क्रिया बटणे ट्रिगर करण्यात देखील सक्षम असेल. \n\nहे ॲपला व्यत्यय आणू नका चालू किंवा बंद करण्याची आणि सबंधित सेटिंग्ज बदलण्याची क्षमता देखील देईल."</string>
+ <string name="notification_listener_security_warning_summary" msgid="4454702907350100288">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> तुम्ही प्राप्त करता ती संपर्क नावे आणि मजकूर मेसेज यासारख्या वैयक्तिक माहितीसह सर्व सूचना वाचण्यात सक्षम असेल. तो सूचना डिसमिस करण्यात किंवा त्यामध्ये असलेली क्रिया बटणे ट्रिगर करण्यात देखील सक्षम असेल. \n\nहे ॲपला व्यत्यय आणू नका सुरू किंवा बंद करण्याची आणि सबंधित सेटिंग्ज बदलण्याची क्षमता देखील देईल."</string>
<string name="notification_listener_disable_warning_summary" msgid="162165151519082978">"तुम्ही <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> साठी सूचनांमधील प्रवेश बंद केल्यास, व्यत्यय आणू नका मधील प्रवेश देखील बंद केला जाऊ शकतो."</string>
<string name="notification_listener_disable_warning_confirm" msgid="7863495391671154188">"बंद करा"</string>
<string name="notification_listener_disable_warning_cancel" msgid="6264631825225298458">"रद्द करा"</string>
@@ -3415,7 +3415,7 @@
<item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> वर्गवाऱ्या हटवल्या</item>
<item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> वर्गवारी हटवली</item>
</plurals>
- <string name="notification_toggle_on" msgid="5119816745741139542">"चालू"</string>
+ <string name="notification_toggle_on" msgid="5119816745741139542">"सुरू"</string>
<string name="notification_toggle_off" msgid="5289843670514922751">"बंद"</string>
<string name="app_notification_block_title" msgid="7898269373875294367">"सर्व ब्लॉक करा"</string>
<string name="app_notification_block_summary" msgid="4502146897785692336">"या सूचना कधीही दर्शवू नका"</string>
@@ -3447,13 +3447,13 @@
<string name="zen_mode_delete_rule_confirmation" msgid="2646596466259025978">"\"<xliff:g id="RULE">%1$s</xliff:g>\" नियम हटवायचा?"</string>
<string name="zen_mode_delete_rule_button" msgid="611058106279881991">"हटवा"</string>
<string name="zen_mode_rule_type_unknown" msgid="2819480113355191421">"अज्ञात"</string>
- <string name="zen_mode_app_set_behavior" msgid="8597398780262575571">"या सेटिंग्ज आत्ता बदलता येणार नाहीत. एका (<xliff:g id="APP_NAME">%1$s</xliff:g>) अॅपने कस्टम वर्तनासह व्यत्यय आणू नका आपोआप चालू केलेले आहे."</string>
- <string name="zen_mode_unknown_app_set_behavior" msgid="5666462954329932302">"या सेटिंग्ज आत्ता बदलता येणार नाहीत. एका अॅपने व्यत्यय आणू नका हे कस्टम वर्तनासह आपोआप चालू केले."</string>
- <string name="zen_mode_qs_set_behavior" msgid="788646569296973998">"या सेटिंग्ज आत्ता बदलता येणार नाहीत. व्यत्यय आणू नका हे मॅन्युअली कस्टम वर्तनासह चालू करण्यात आले."</string>
+ <string name="zen_mode_app_set_behavior" msgid="8597398780262575571">"या सेटिंग्ज आत्ता बदलता येणार नाहीत. एका (<xliff:g id="APP_NAME">%1$s</xliff:g>) अॅपने कस्टम वर्तनासह व्यत्यय आणू नका आपोआप सुरू केलेले आहे."</string>
+ <string name="zen_mode_unknown_app_set_behavior" msgid="5666462954329932302">"या सेटिंग्ज आत्ता बदलता येणार नाहीत. एका अॅपने व्यत्यय आणू नका हे कस्टम वर्तनासह आपोआप सुरू केले."</string>
+ <string name="zen_mode_qs_set_behavior" msgid="788646569296973998">"या सेटिंग्ज आत्ता बदलता येणार नाहीत. व्यत्यय आणू नका हे मॅन्युअली कस्टम वर्तनासह सुरू करण्यात आले."</string>
<string name="zen_schedule_rule_type_name" msgid="4516851728113801329">"वेळ"</string>
- <string name="zen_schedule_rule_enabled_toast" msgid="1742354493045049048">"निर्दिष्ट केलेल्या कालावधींसाठी व्यत्यय आणू नका चालू करण्याकरिता स्वयंचलित नियम सेट केला"</string>
+ <string name="zen_schedule_rule_enabled_toast" msgid="1742354493045049048">"निर्दिष्ट केलेल्या कालावधींसाठी व्यत्यय आणू नका सुरू करण्याकरिता स्वयंचलित नियम सेट केला"</string>
<string name="zen_event_rule_type_name" msgid="7467729997336583342">"इव्हेंट"</string>
- <string name="zen_event_rule_enabled_toast" msgid="7087368268966855976">"निर्दिष्ट केलेल्या इव्हेंटसाठी व्यत्यय आणू नका चालू करण्याकरिता स्वयंचलित नियम सेट केला"</string>
+ <string name="zen_event_rule_enabled_toast" msgid="7087368268966855976">"निर्दिष्ट केलेल्या इव्हेंटसाठी व्यत्यय आणू नका सुरू करण्याकरिता स्वयंचलित नियम सेट केला"</string>
<string name="zen_mode_event_rule_calendar" msgid="6088077103908487442">"यासाठी इव्हेंट दरम्यान"</string>
<string name="zen_mode_event_rule_summary_calendar_template" msgid="4027207992040792657">"<xliff:g id="CALENDAR">%1$s</xliff:g> साठी इव्हेंट दरम्यान"</string>
<string name="zen_mode_event_rule_summary_any_calendar" msgid="7590085295784895885">"कोणतेही कॅलेंडर"</string>
@@ -3464,7 +3464,7 @@
<string name="zen_mode_event_rule_reply_yes_or_maybe" msgid="5042234361937256329">"होय किंवा कदाचित"</string>
<string name="zen_mode_event_rule_reply_yes" msgid="7039756546321205552">"होय"</string>
<string name="zen_mode_rule_not_found_text" msgid="6553855397424553685">"नियम आढळला नाही."</string>
- <string name="zen_mode_rule_summary_enabled_combination" msgid="8269105393636454359">"चालू / <xliff:g id="MODE">%1$s</xliff:g>"</string>
+ <string name="zen_mode_rule_summary_enabled_combination" msgid="8269105393636454359">"सुरू / <xliff:g id="MODE">%1$s</xliff:g>"</string>
<string name="zen_mode_rule_summary_provider_combination" msgid="8674730656585528193">"<xliff:g id="PACKAGE">%1$s</xliff:g>\n<xliff:g id="SUMMARY">%2$s</xliff:g>"</string>
<string name="zen_mode_schedule_rule_days" msgid="220627703673691816">"दिवस"</string>
<string name="zen_mode_schedule_rule_days_none" msgid="6011716195119389956">"काहीही नाही"</string>
@@ -3526,7 +3526,7 @@
<string name="zen_mode_calls_summary_two" msgid="9017678770532673578">"<xliff:g id="CALLER_TYPE">%1$s</xliff:g> आणि <xliff:g id="CALLERT_TPYE">%2$s</xliff:g> कडून अनुमती द्या"</string>
<string name="zen_mode_repeat_callers_summary" msgid="1752513516040525545">"एकाच व्यक्तीने <xliff:g id="MINUTES">%d</xliff:g> मिनिटांच्या आत दुसर्यांदा कॉल केल्यास"</string>
<string name="zen_mode_behavior_summary_custom" msgid="3909532602640130841">"कस्टम"</string>
- <string name="zen_mode_when" msgid="7835420687948416255">"स्वयंचलितपणे चालू करा"</string>
+ <string name="zen_mode_when" msgid="7835420687948416255">"स्वयंचलितपणे सुरू करा"</string>
<string name="zen_mode_when_never" msgid="4506296396609224524">"कधीही नाही"</string>
<string name="zen_mode_when_every_night" msgid="3942151668791426194">"प्रत्येक रात्री"</string>
<string name="zen_mode_when_weeknights" msgid="2412709309122408474">"आठवड्याच्या रात्री"</string>
@@ -3544,11 +3544,11 @@
</plurals>
<string name="zen_mode_summary_alarms_only_by_time" msgid="2462898862757904560">"केवळ <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> पर्यंत अलार्मवर बदला"</string>
<string name="zen_mode_summary_always" msgid="2703276042913200837">"नेहमी व्यत्यय आणा वर बदला"</string>
- <string name="zen_mode_screen_on" msgid="7098470659072167219">"स्क्रीन चालू असताना"</string>
+ <string name="zen_mode_screen_on" msgid="7098470659072167219">"स्क्रीन सुरू असताना"</string>
<string name="zen_mode_screen_on_summary" msgid="8275416649295357524">"सूचनांना स्क्रीनवरील व्यत्यय आणू नका पॉपने शांत होऊ द्या, आणि एक स्टेटस बार आयकॉन दाखवू द्या"</string>
<string name="zen_mode_screen_off" msgid="84211490206459038">"स्क्रीन बंद असताना"</string>
- <string name="zen_mode_screen_off_summary" msgid="8592179073243001267">"व्यत्यय आणू नका ने स्क्रीन चालू करून लाइटची उघडझाप करू द्या आणि सूचनांना मूक होऊ द्या"</string>
- <string name="zen_mode_screen_off_summary_no_led" msgid="7255874108150630145">"व्यत्यय आणू नका ने स्क्रीन चालू करा आणि सूचनांना मूक होऊ द्या"</string>
+ <string name="zen_mode_screen_off_summary" msgid="8592179073243001267">"व्यत्यय आणू नका ने स्क्रीन सुरू करून लाइटची उघडझाप करू द्या आणि सूचनांना मूक होऊ द्या"</string>
+ <string name="zen_mode_screen_off_summary_no_led" msgid="7255874108150630145">"व्यत्यय आणू नका ने स्क्रीन सुरू करा आणि सूचनांना मूक होऊ द्या"</string>
<string name="notification_app_settings_button" msgid="3651180424198580907">"सूचना सेटिंग्ज"</string>
<string name="suggestion_button_text" msgid="5783566542423813847">"ठीक"</string>
<string name="device_feedback" msgid="4042352891448769818">"या डिव्हाइस बद्दल अभिप्राय पाठवा"</string>
@@ -3565,7 +3565,7 @@
<string name="managing_admin" msgid="3212584016377581608">"<xliff:g id="ADMIN_APP_LABEL">%s</xliff:g> द्वारे व्यवस्थापित"</string>
<string name="experimental_preference" msgid="5903223408406906322">"(प्रायोगिक)"</string>
<string name="encryption_interstitial_header" msgid="3298397268731647519">"सुरक्षित प्रारंभ"</string>
- <string name="encryption_continue_button" msgid="2808797091460167842">"सुरु ठेवा"</string>
+ <string name="encryption_continue_button" msgid="2808797091460167842">"सुरू ठेवा"</string>
<string name="encryption_interstitial_message_pin" msgid="6592265582286340307">"सुरू होण्यापूर्वी तुमचा पिन आवश्यक करून तुम्ही हे डिव्हाइस अधिक संरक्षित करू शकता. डिव्हाइस सुरू होईपर्यंत, ते कॉल, मेसेज किंवा अलार्मसह सूचना प्राप्त करू शकत नाही. \n\nयामुळे हरवलेल्या किंवा चोरीला गेलेल्या डिव्हाइस वरील डेटाचे संरक्षण करण्यात मदत होते. तुमचे डिव्हाइस सुरू करण्यासाठी पिन हवा?"</string>
<string name="encryption_interstitial_message_pattern" msgid="5620724295995735120">"सुरू होण्यापूर्वी तुमचा पॅटर्न आवश्यक करून तुम्ही हे डिव्हाइस अधिक संरक्षित करू शकता. डिव्हाइस सुरू होईपर्यंत, ते कॉल, मेसेज किंवा अलार्मसह सूचना प्राप्त करू शकत नाही. \n\nयामुळे हरवलेल्या किंवा चोरीला गेलेल्या डिव्हाइस वरील डेटाचे संरक्षण करण्यात मदत होते. तुमचे डिव्हाइस सुरू करण्यासाठी पॅटर्न हवा?"</string>
<string name="encryption_interstitial_message_password" msgid="7236688467386126401">"सुरू होण्यापूर्वी तुमचा पासवर्ड आवश्यक करून तुम्ही हे डिव्हाइस अधिक संरक्षित करू शकता. डिव्हाइस सुरू होईपर्यंत, ते कॉल, मेसेज किंवा अलार्मसह सूचना प्राप्त करू शकत नाही. \n\nयामुळे हरवलेल्या किंवा चोरीला गेलेल्या डिव्हाइस वरील डेटाचे संरक्षण करण्यात मदत होते. तुमचे डिव्हाइस सुरू करण्यासाठी पासवर्ड हवा?"</string>
@@ -3712,8 +3712,8 @@
<string name="high_power_off" msgid="5906679734326490426">"बॅटरी वापर ऑप्टिमाइझ करत आहे"</string>
<string name="high_power_system" msgid="739584574711292753">"बॅटरी ऑप्टिमायझेशन उपलब्ध नाही"</string>
<string name="high_power_desc" msgid="333756885680362741">"बॅटरी ऑप्टिमायझेशन वापरू नका. तुमची बॅटरी अधिक द्रुतपणे संपवू शकते."</string>
- <string name="high_power_prompt_title" msgid="2805745781720454052">"अॅप नेहमी पार्श्वभूमीत चालू द्यायचे?"</string>
- <string name="high_power_prompt_body" msgid="8067395096053552289">"<xliff:g id="APP_NAME">%1$s</xliff:g> नेहमी पार्श्वभूमीमध्ये चालू दिल्याने बॅटरीचे आयुर्मान कमी होऊ शकते. \n\nतुम्ही हे नंतर सेटिंग्ज > अॅप्स आणि सूचना मधून बदलू शकता."</string>
+ <string name="high_power_prompt_title" msgid="2805745781720454052">"अॅप नेहमी पार्श्वभूमीत सुरू द्यायचे?"</string>
+ <string name="high_power_prompt_body" msgid="8067395096053552289">"<xliff:g id="APP_NAME">%1$s</xliff:g> नेहमी पार्श्वभूमीमध्ये सुरू दिल्याने बॅटरीचे आयुर्मान कमी होऊ शकते. \n\nतुम्ही हे नंतर सेटिंग्ज > अॅप्स आणि सूचना मधून बदलू शकता."</string>
<string name="battery_summary" msgid="4345690800899981339">"शेवटच्या पूर्ण चार्जनंतर <xliff:g id="PERCENTAGE">%1$s</xliff:g> वापर"</string>
<string name="battery_power_management" msgid="2853925857548647969">"ऊर्जा व्यवस्थापन"</string>
<string name="no_battery_summary" msgid="4105932628367471314">"पूर्ण चार्ज झाल्यानंतर बॅटरी वापर नाही"</string>
@@ -3788,8 +3788,8 @@
<string name="memory_maximum_usage" msgid="4734981118293469479">"कमाल वापर"</string>
<string name="no_data_usage" msgid="903383745620135746">"डेटा वापरला गेलेला नाही"</string>
<string name="zen_access_warning_dialog_title" msgid="7704910289810337055">"<xliff:g id="APP">%1$s</xliff:g> वर व्यत्यय आणू नका ला ॲक्सेस द्यायचा का?"</string>
- <string name="zen_access_warning_dialog_summary" msgid="2717755746850874577">"व्यत्यय आणू नका चालू/बंद करण्यात आणि संबंधित स्ट्रिंगमध्ये बदल करण्यात अॅप सक्षम असेल."</string>
- <string name="zen_access_disabled_package_warning" msgid="7086237569177576966">"सूचना प्रवेश चालू असल्याने चालू केलेले ठेवणे आवश्यक आहे"</string>
+ <string name="zen_access_warning_dialog_summary" msgid="2717755746850874577">"व्यत्यय आणू नका सुरू/बंद करण्यात आणि संबंधित स्ट्रिंगमध्ये बदल करण्यात अॅप सक्षम असेल."</string>
+ <string name="zen_access_disabled_package_warning" msgid="7086237569177576966">"सूचना प्रवेश सुरू असल्याने सुरू केलेले ठेवणे आवश्यक आहे"</string>
<string name="zen_access_revoke_warning_dialog_title" msgid="6850994585577513299">"<xliff:g id="APP">%1$s</xliff:g> साठी व्यत्यय आणू नका मध्ये प्रवेश करणे रद्द करायचे?"</string>
<string name="zen_access_revoke_warning_dialog_summary" msgid="3487422193181311403">"या ॲपने तयार केलेले सर्व व्यत्यय आणू नका नियम काढले जातील."</string>
<string name="ignore_optimizations_on" msgid="4373971641328943551">"ऑप्टिमाइझ करू नका"</string>
@@ -3856,7 +3856,7 @@
<item quantity="other"><xliff:g id="COUNT">%d</xliff:g> अॅप्ससाठी बंद</item>
<item quantity="one">1 अॅपसाठी बंद</item>
</plurals>
- <string name="notification_summary_none" msgid="5003043219430054784">"सर्व ॲप्ससाठी चालू"</string>
+ <string name="notification_summary_none" msgid="5003043219430054784">"सर्व ॲप्ससाठी सुरू"</string>
<string name="apps_summary" msgid="8355759446490212195">"<xliff:g id="COUNT">%1$d</xliff:g> अॅप्स इंस्टॉल केले"</string>
<string name="apps_summary_example" msgid="3011143598675185269">"24 अॅप्स इंस्टॉल केली"</string>
<string name="storage_summary" msgid="4835916510511133784">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> वापरले - <xliff:g id="FREE_SPACE">%2$s</xliff:g> मोकळे"</string>
@@ -3885,7 +3885,7 @@
<string name="admin_profile_owner_user_message" msgid="2991249382056855531">"तुमचा प्रशासक सेटिंग्ज, परवानग्या, कॉर्पोरेट ॲक्सेस, नेटवर्क ॲक्टिव्हिटी आणि डीव्हाइसची स्थान माहिती यांसह तुमच्या कार्य प्रोफाइलशी संबधित ॲप्सचे आणि डेटाचे परीक्षण व व्यवस्थापन करू शकतो."</string>
<string name="admin_device_owner_message" msgid="1823477572459610869">"तुमच्या प्रशासकाकडे तुमच्या नेटवर्क ॲक्टिव्हिटी तसेच या डीव्हाइसशी संबधित सेटिंग्ज, कॉर्पोरेट ॲक्सेस, परवानग्या यांसह अॅप्स आणि डेटा यांचे परीक्षण आणि व्यवस्थापन करण्याची क्षमता आहे."</string>
<string name="condition_turn_off" msgid="4395150881365143558">"बंद करा"</string>
- <string name="condition_turn_on" msgid="1699088245481841159">"चालू करा"</string>
+ <string name="condition_turn_on" msgid="1699088245481841159">"सुरू करा"</string>
<string name="condition_expand_show" msgid="4118818022763913777">"दर्शवा"</string>
<string name="condition_expand_hide" msgid="1112721783024332643">"लपवा"</string>
<string name="condition_hotspot_title" msgid="4143299802283098506">"हॉटस्पॉट अॅक्टिव्ह आहे"</string>
@@ -3965,8 +3965,8 @@
<string name="configure" msgid="8232696842838580549">"कॉन्फिगर करा"</string>
<string name="data_usage_other_apps" msgid="7002491980141402084">"वापरामध्ये समाविष्ट केलेली इतर अॅप्स"</string>
<plurals name="data_saver_unrestricted_summary" formatted="false" msgid="6046013861315713697">
- <item quantity="other">डेटा सेव्हर चालू असताना <xliff:g id="COUNT">%1$d</xliff:g> अॅप्सना अनिर्बंध डेटा वापरण्याची अनुमती दिली</item>
- <item quantity="one"> डेटा सेव्हर चालू असताना 1 अॅपला अनिर्बंध डेटा वापरण्याची अनुमती दिली</item>
+ <item quantity="other">डेटा सेव्हर सुरू असताना <xliff:g id="COUNT">%1$d</xliff:g> अॅप्सना अनिर्बंध डेटा वापरण्याची अनुमती दिली</item>
+ <item quantity="one"> डेटा सेव्हर सुरू असताना 1 अॅपला अनिर्बंध डेटा वापरण्याची अनुमती दिली</item>
</plurals>
<string name="data_usage_title" msgid="7874606430902201083">"प्राथमिक डेटा"</string>
<string name="data_usage_wifi_title" msgid="7161828479387766556">"वाय-फाय डेटा"</string>
@@ -3993,7 +3993,7 @@
<string name="data_saver_off" msgid="7439439787358504018">"बंद"</string>
<string name="data_saver_switch_title" msgid="8244008132112735207">"डेटा सेव्हर वापरा"</string>
<string name="unrestricted_app_title" msgid="4390661122069905122">"अनिर्बंध डेटा वापर"</string>
- <string name="unrestricted_app_summary" msgid="2829141815077800483">"डेटा सेव्हर चालू असताना अनिर्बंध डेटा प्रवेशास अनुमती द्या"</string>
+ <string name="unrestricted_app_summary" msgid="2829141815077800483">"डेटा सेव्हर सुरू असताना अनिर्बंध डेटा प्रवेशास अनुमती द्या"</string>
<string name="home_app" msgid="3695063566006954160">"होम अॅप"</string>
<string name="no_default_home" msgid="1518949210961918497">"डीफॉल्ट होम नाही"</string>
<string name="lockpattern_settings_require_cred_before_startup" msgid="63693894094570367">"सुरक्षित प्रारंभ"</string>
@@ -4142,7 +4142,7 @@
<string name="fingerprint_swipe_for_notifications_summary" product="tablet" msgid="3480057984564476283">"तुमच्या सूचना तपासण्यासाठी, तुमच्या टॅबलेटच्या मागे फिंगरप्रिंट सेन्सरवर खाली स्वाइप करा."</string>
<string name="fingerprint_swipe_for_notifications_summary" product="device" msgid="7950264130913070035">"आपल्या सूचना तपासण्यासाठी, आपल्या डिव्हाइसच्या मागे फिंगरप्रिंट सेन्सरवर खाली स्वाइप करा."</string>
<string name="fingerprint_swipe_for_notifications_suggestion_title" msgid="948946491233738823">"सूचना पटकन पहा"</string>
- <string name="gesture_setting_on" msgid="7573680730101327866">"चालू"</string>
+ <string name="gesture_setting_on" msgid="7573680730101327866">"सुरू"</string>
<string name="gesture_setting_off" msgid="2540159841716890511">"बंद"</string>
<string name="oem_unlock_enable_disabled_summary_bootloader_unlocked" msgid="7233244080078311793">"बुटलोडर आधीपासून अनलॉक केले"</string>
<string name="oem_unlock_enable_disabled_summary_connectivity" msgid="262986780389836168">"अगोदर इंटरनेटशी कनेक्ट करा"</string>
@@ -4196,9 +4196,9 @@
</plurals>
<string name="enterprise_privacy_input_method" msgid="5885916325874284011">"डीफॉल्ट कीबोर्ड"</string>
<string name="enterprise_privacy_input_method_name" msgid="439610095825218563">"<xliff:g id="APP_LABEL">%s</xliff:g> वर सेट करा"</string>
- <string name="enterprise_privacy_always_on_vpn_device" msgid="2022700916516458213">"नेहमी VPN चालू असणे सक्रिय आहे"</string>
- <string name="enterprise_privacy_always_on_vpn_personal" msgid="5644065780843002044">"आपल्या वैयक्तिक प्रोफाइलमध्ये नेहमी VPN चालू असणे सक्रिय आहे"</string>
- <string name="enterprise_privacy_always_on_vpn_work" msgid="6443089897985373564">"आपल्या कार्य प्रोफाइलमध्ये नेहमी VPN चालू असणे सक्रिय आहे"</string>
+ <string name="enterprise_privacy_always_on_vpn_device" msgid="2022700916516458213">"नेहमी VPN सुरू असणे सक्रिय आहे"</string>
+ <string name="enterprise_privacy_always_on_vpn_personal" msgid="5644065780843002044">"आपल्या वैयक्तिक प्रोफाइलमध्ये नेहमी VPN सुरू असणे सक्रिय आहे"</string>
+ <string name="enterprise_privacy_always_on_vpn_work" msgid="6443089897985373564">"आपल्या कार्य प्रोफाइलमध्ये नेहमी VPN सुरू असणे सक्रिय आहे"</string>
<string name="enterprise_privacy_global_http_proxy" msgid="3862135895716080830">"जागतिक HTTP प्रॉक्सी सेट आहे"</string>
<string name="enterprise_privacy_ca_certs_device" msgid="7715658848470643878">"विश्वसनीय क्रेडेंशिअल"</string>
<string name="enterprise_privacy_ca_certs_personal" msgid="1356447417193483802">"तुमच्या खाजगी प्रोफाइलमधील विश्वसनीय क्रेडेंशिअल"</string>
@@ -4267,7 +4267,7 @@
<string name="show_operator_name_summary" msgid="6352180285743777497">"स्टेटस बारमध्ये नेटवर्क नाव प्रदर्शित करा"</string>
<string name="storage_manager_indicator" msgid="4255140732848476875">"स्टोरेज व्यवस्थापक: <xliff:g id="STATUS">^1</xliff:g>"</string>
<string name="storage_manager_indicator_off" msgid="6404056007102580777">"बंद"</string>
- <string name="storage_manager_indicator_on" msgid="5295306384982062320">"चालू"</string>
+ <string name="storage_manager_indicator_on" msgid="5295306384982062320">"सुरू"</string>
<string name="install_type_instant" msgid="6248487669862821874">"इन्सटंट अॅप"</string>
<string name="automatic_storage_manager_deactivation_warning" msgid="7867793739491286374">"स्टोरेज व्यवस्थापक बंद करायचा?"</string>
<string name="storage_movies_tv" msgid="7282484273991655296">"चित्रपट आणि टीव्ही अॅप्स"</string>
@@ -4310,7 +4310,7 @@
<string name="my_device_info_device_name_preference_title" msgid="7384446683248009296">"डिव्हाइसचे नाव"</string>
<string name="change_wifi_state_title" msgid="5140754955787584174">"वाय-फाय नियंत्रण"</string>
<string name="change_wifi_state_app_detail_switch" msgid="6489090744937816260">"ॲपला वाय-फाय नियंत्रित करू द्या"</string>
- <string name="change_wifi_state_app_detail_summary" msgid="614854822469259860">"या ॲपला वाय-फाय चालू किंवा बंद करू द्या, वाय-फाय नेटवर्क स्कॅन करू द्या आणि त्याच्याशी कनेक्ट करू द्या, नेटवर्क जोडू किंवा काढू द्या किंवा केवळ-स्थानिक हॉटस्पॉट सुरू करू द्या"</string>
+ <string name="change_wifi_state_app_detail_summary" msgid="614854822469259860">"या ॲपला वाय-फाय सुरू किंवा बंद करू द्या, वाय-फाय नेटवर्क स्कॅन करू द्या आणि त्याच्याशी कनेक्ट करू द्या, नेटवर्क जोडू किंवा काढू द्या किंवा केवळ-स्थानिक हॉटस्पॉट सुरू करू द्या"</string>
<string name="media_output_title" msgid="8710632337456601848">"मीडिया यावर प्ले करा"</string>
<string name="media_output_default_summary" msgid="3159237976830415584">"हे डिव्हाइस"</string>
<string name="media_output_summary" product="default" msgid="6294261435613551178">"फोन"</string>
diff --git a/tests/CarDeveloperOptions/res/values-ne/arrays.xml b/tests/CarDeveloperOptions/res/values-ne/arrays.xml
index 324ac8b..38867ec 100644
--- a/tests/CarDeveloperOptions/res/values-ne/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-ne/arrays.xml
@@ -170,7 +170,7 @@
<string-array name="wifi_proxy_settings">
<item msgid="9032900195127165132">"कुनै पनि होइन"</item>
<item msgid="1464741437353223198">"म्यानुअल"</item>
- <item msgid="5793600062487886090">"प्रोक्सी स्वतः समायोजन"</item>
+ <item msgid="5793600062487886090">"प्रोक्सी अटो-कन्फिगुरेसन"</item>
</string-array>
<string-array name="apn_auth_entries">
<item msgid="7099647881902405997">"कुनै पनि होइन"</item>
diff --git a/tests/CarDeveloperOptions/res/values-ne/strings.xml b/tests/CarDeveloperOptions/res/values-ne/strings.xml
index 79c7ff3..8478f54 100644
--- a/tests/CarDeveloperOptions/res/values-ne/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-ne/strings.xml
@@ -127,7 +127,7 @@
<string name="bluetooth_notif_title" msgid="5090288898529286011">"जोडी पार्ने अनुरोध"</string>
<string name="bluetooth_notif_message" msgid="6612367890895077938">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>सँग जोड्न ट्याप गर्नुहोस्।"</string>
<string name="bluetooth_show_received_files" msgid="5060846395852236652">"प्राप्त गरिएका फाइलहरू"</string>
- <string name="bluetooth_show_files_received_via_bluetooth" msgid="1699095577431389560">"ब्लुटुथमार्फत फाइलहरू प्राप्त गरियो"</string>
+ <string name="bluetooth_show_files_received_via_bluetooth" msgid="1699095577431389560">"ब्लुटुथमार्फत प्राप्त फाइलहरू"</string>
<string name="device_picker" msgid="8345264486071697705">"ब्लुटुथ उपकरण छान्नुहोस्"</string>
<string name="bluetooth_ask_enablement" msgid="8716802066127746062">"<xliff:g id="APP_NAME">%1$s</xliff:g> ब्लुटुथ सक्रिय गर्न चाहन्छ"</string>
<string name="bluetooth_ask_disablement" msgid="7125319551097350783">"<xliff:g id="APP_NAME">%1$s</xliff:g> ब्लुटुथ निष्क्रिय पार्न चाहन्छ"</string>
@@ -179,7 +179,7 @@
<string name="connected_device_connected_title" msgid="6255107326608785482">"हाल जडान अवस्थामा छ"</string>
<string name="connected_device_saved_title" msgid="8270136893488475163">"सुरक्षित गरिएका यन्त्रहरू"</string>
<string name="connected_device_add_device_summary" msgid="7960491471270158891">"जोडा बनाउनका लागि ब्लुटुथ सक्रिय हुने छ"</string>
- <string name="connected_device_connections_title" msgid="9205000271382018428">"जडानसम्बन्धी प्राथमिकताहरू"</string>
+ <string name="connected_device_connections_title" msgid="9205000271382018428">"कनेक्सनका प्राथमिकताहरू"</string>
<string name="connected_device_previously_connected_title" msgid="225918223397410428">"यसअघि जडान भएका यन्त्रहरू"</string>
<string name="connected_device_previously_connected_screen_title" msgid="2018789662358162716">"यसअघि जडान भएका यन्त्रहरू"</string>
<string name="connected_device_bluetooth_turned_on_toast" msgid="4652326177920814476">"ब्लुटुथ सक्रिय गरियो"</string>
@@ -207,7 +207,7 @@
<string name="proxy_error_empty_port" msgid="8034561724923076215">"तपाईँले पोर्टक्षेत्र पूरा गर्नु जरुरी छ।"</string>
<string name="proxy_error_empty_host_set_port" msgid="8471455809508588255">"यदि होस्ट फिल्ड खाली छ भने पोर्ट फिल्ड पनि खाली हुनु पर्छ।"</string>
<string name="proxy_error_invalid_port" msgid="4046559920586100637">"तपाईंले टाइप गर्नुभएको पोर्ट मान्य छैन।"</string>
- <string name="proxy_warning_limited_support" msgid="9026539134219095768">"HTTP प्रोक्सी ब्राउजरद्वारा प्रयोग गरिन्छ तर अन्य अनुप्रयोगहरूद्वारा प्रयोग गर्न नसकिने पनि हुन सक्छ।"</string>
+ <string name="proxy_warning_limited_support" msgid="9026539134219095768">"ब्राउजरले HTTP प्रोक्सी प्रयोग गर्छ तर अन्य अनुप्रयोगले यसको प्रयोग नगर्न पनि सक्छन्।"</string>
<string name="proxy_url_title" msgid="882042361706435904">"PAC URL: "</string>
<string name="radio_info_dl_kbps" msgid="2903778264453410272">"DL ब्यान्डविथ (kbps):"</string>
<string name="radio_info_ul_kbps" msgid="3802245899811732716">"UL व्यान्डविथ (kbps):"</string>
@@ -371,7 +371,7 @@
<string name="location_settings_master_switch_title" msgid="3108016866082816733">"स्थान प्रयोग गर्नुहोस्"</string>
<string name="location_settings_summary_location_off" msgid="5563530256978372978">"निष्क्रिय"</string>
<plurals name="location_settings_summary_location_on" formatted="false" msgid="7893342914540884818">
- <item quantity="other">सक्रिय - <xliff:g id="COUNT_1">%1$d</xliff:g> अनुप्रयोगहरूले स्थानमाथि पहुँच राख्न सक्छन्</item>
+ <item quantity="other">सक्रिय - <xliff:g id="COUNT_1">%1$d</xliff:g> एपहरूले स्थानमाथि पहुँच राख्न सक्छन्</item>
<item quantity="one">सक्रिय - <xliff:g id="COUNT_0">%1$d</xliff:g> अनुप्रयोगले स्थानमाथि पहुँच राख्न सक्छ</item>
</plurals>
<string name="location_settings_loading_app_permission_stats" msgid="7818169326621327628">"लोड गर्दै…"</string>
@@ -901,14 +901,14 @@
<string name="wifi_show_advanced" msgid="8199779277168030597">"उन्नत विकल्पहरू"</string>
<string name="wifi_advanced_toggle_description_expanded" msgid="1506697245302596510">"ड्रप डाउन सूचीका उन्नत विकल्पहरू। संक्षिप्त गर्न डबल-ट्याप गर्नुहोस्।"</string>
<string name="wifi_advanced_toggle_description_collapsed" msgid="3014965593695454879">"ड्रप डाउन सूचीका उन्नत विकल्पहरू। विस्तृत गर्न डबल-ट्याप गर्नुहोस्।"</string>
- <string name="wifi_ssid" msgid="6746270925975522641">"सञ्जाल नाम"</string>
+ <string name="wifi_ssid" msgid="6746270925975522641">"नेटवर्कको नाम"</string>
<string name="wifi_ssid_hint" msgid="5010024648106585165">"SSID प्रविष्टि गर्नुहोस्"</string>
<string name="wifi_security" msgid="9136702039496152831">"सुरक्षा"</string>
<string name="wifi_hidden_network" msgid="6647772204699776833">"लुकाइएको नेटवर्क"</string>
<string name="wifi_hidden_network_warning" msgid="8182333050353796473">"यदि तपाईंको राउटरले कुनै नेटवर्कको ID प्रसारण गरिरहेको छैन तर तपाईं भविष्यमा यसमा जडान गर्न चाहनुहुन्छ भने, तपाईं उक्त नेटवर्कलाई लुकाइएको रूपमा सेट गर्न सक्नुहुन्छ।\n\n तपाईंको फोनले नेटवर्क फेला पार्नका लागि नियमित रूपमा आफ्नो सिग्नल प्रसारण गर्ने हुँदा यसले सुरक्षासम्बन्धी जोखिम सिर्जना गर्न सक्छ।\n\nनेटवर्कलाई लुकाइएको रूपमा सेट गर्नुले तपाईंको राउटरको सेटिङ परिवर्तन गर्ने छैन।"</string>
- <string name="wifi_signal" msgid="696548364467704808">"सङ्केत क्षमता"</string>
+ <string name="wifi_signal" msgid="696548364467704808">"सिग्नलको क्षमता"</string>
<string name="wifi_status" msgid="3439931558930689940">"वस्तुस्थिति"</string>
- <string name="tx_wifi_speed" msgid="2571810085003261073">"लिंकको गति ट्रान्समिट गर्नुहोस्"</string>
+ <string name="tx_wifi_speed" msgid="2571810085003261073">"लिंक पठाउने गति"</string>
<string name="rx_wifi_speed" msgid="7392873246110937187">"लिंक प्राप्त गर्ने गति"</string>
<string name="wifi_frequency" msgid="6132852924995724246">"आवृत्ति"</string>
<string name="wifi_ip_address" msgid="5572539114989914831">"IP ठेगाना"</string>
@@ -919,7 +919,7 @@
<string name="wifi_eap_ca_cert" msgid="1496395241849383785">"CA प्रमाणपत्र"</string>
<string name="wifi_eap_domain" msgid="3298302320003640130">"डोमेन"</string>
<string name="wifi_eap_user_cert" msgid="6786839531765719173">"प्रयोगकर्ता प्रमाणपत्र"</string>
- <string name="wifi_eap_identity" msgid="5280457017705738773">"पहिचान गर्नुहोस्"</string>
+ <string name="wifi_eap_identity" msgid="5280457017705738773">"पहिचान"</string>
<string name="wifi_eap_anonymous" msgid="6352344972490839958">"अज्ञात पहिचान"</string>
<string name="wifi_password" msgid="6942983531275177771">"पासवर्ड:"</string>
<string name="wifi_show_password" msgid="7878398590772942202">"पासवर्ड देखाउनुहोस्"</string>
@@ -935,11 +935,11 @@
<string name="wifi_privacy_settings" msgid="4462092795794247809">"गोपनीयता"</string>
<string name="wifi_privacy_settings_ephemeral_summary" msgid="2411375348287064283">"अनियमित MAC"</string>
<string name="wifi_dpp_add_device_to_network" msgid="8871041525483253430">"कुनै यन्त्र थप्नुहोस्"</string>
- <string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"उक्त यन्त्रलाई “<xliff:g id="SSID">%1$s</xliff:g>” मा तलको QR कोडलाई मध्य भागमा राख्नुहोस्"</string>
+ <string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"उक्त यन्त्रलाई “<xliff:g id="SSID">%1$s</xliff:g>” मा थप्न तलको QR कोडलाई मध्य भागमा पार्नुहोस्"</string>
<string name="wifi_dpp_scan_qr_code" msgid="6021600592661235546">"QR कोड स्क्यान गर्नुहोस्"</string>
<string name="wifi_dpp_scan_qr_code_join_network" msgid="3085162928804379545">"“<xliff:g id="SSID">%1$s</xliff:g>” मा जडान गर्न तलको QR कोडलाई मध्य भागमा राख्नुहोस्"</string>
- <string name="wifi_dpp_scan_qr_code_join_unknown_network" msgid="5682308317067290738">"QR कोड स्क्यान गरी Wi‑Fi मा सामेल हुनुहोस्"</string>
- <string name="wifi_dpp_share_wifi" msgid="1724161216219646284">"Wi‑Fi साझा रूपमा प्रयोग गर्नुहोस्"</string>
+ <string name="wifi_dpp_scan_qr_code_join_unknown_network" msgid="5682308317067290738">" Wi‑Fi जोड्न QR कोड स्क्यान गर्नुहोस्"</string>
+ <string name="wifi_dpp_share_wifi" msgid="1724161216219646284">"Wi‑Fi सेयर गर्नुहोस्"</string>
<string name="wifi_dpp_scan_qr_code_with_another_device" msgid="4357387474444884759">"“<xliff:g id="SSID">%1$s</xliff:g>” मा कनेक्ट गर्न र पासवर्ड सेयर गर्न यो QR कोड स्क्यान गर्नुहोस्"</string>
<string name="wifi_dpp_scan_open_network_qr_code_with_another_device" msgid="572011882416511818">"“<xliff:g id="SSID">%1$s</xliff:g>” मा जडान गर्न QR कोड स्क्यान गर्नुहोस्"</string>
<string name="wifi_dpp_could_not_detect_valid_qr_code" msgid="27667719861826438">"QR कोड पढ्न सकिएन। कोडलाई पुनः केन्द्रमा ल्याउनुहोस् र फेरि प्रयास गर्नुहोस्"</string>
@@ -975,7 +975,7 @@
<string name="wifi_do_not_validate_eap_server" msgid="1892537559682474878">"प्रमाणित नगर्नुहोस्"</string>
<string name="wifi_do_not_validate_eap_server_warning" msgid="3895397996759837323">"कुनै प्रमाणपत्र निर्दिष्ट गरिएको छैन। तपाईंको जडान निजी हुने छैन।"</string>
<string name="wifi_ssid_too_long" msgid="34911971389775920">"नेटवर्कको नाम धेरै लामो भयो।"</string>
- <string name="wifi_no_domain_warning" msgid="735859919311067606">"डोमेन निर्दिष्ट गर्नुपर्छ"</string>
+ <string name="wifi_no_domain_warning" msgid="735859919311067606">"डोमेन तोक्नु पर्छ"</string>
<string name="wifi_wps_available_first_item" msgid="3221671453930485243">"WPS उपलब्ध छ"</string>
<string name="wifi_wps_available_second_item" msgid="5703265526619705185">" (WPS उपलब्ध)"</string>
<string name="wifi_carrier_connect" msgid="7202618367339982884">"सेवा प्रदायकको Wi‑Fi नेटवर्क"</string>
@@ -990,7 +990,7 @@
<string name="no_internet_access_text" msgid="7093326244145734504">"यो नेटवर्कसँग इन्टरनेटमाथि पहुँच छैन। जडान भइरहने हो?"</string>
<string name="partial_connectivity_text" msgid="2142157808079235684">"इन्टरनेट जडान सीमित हुँदा कतिपय एप तथा सेवाहरूले काम नगर्न सक्छन्। अघि बढ्नुहोस्"</string>
<string name="no_internet_access_remember" msgid="1368137189939004202">"यस नेटवर्कको लागि फेरि नसोध्नुहोस्"</string>
- <string name="lost_internet_access_title" msgid="1061916948695946130">"Wi-Fi इन्टरनेटमा जडान भएको छैन"</string>
+ <string name="lost_internet_access_title" msgid="1061916948695946130">"Wi-Fi इन्टरनेटमा कनेक्ट भएको छैन"</string>
<string name="lost_internet_access_text" msgid="8962010031520731813">"Wi-Fi को जडान खराब हुँदा तपाईं मोबाइल नेटवर्कमा स्विच गर्न सक्नुहुन्छ। डेटा उपयोग शुल्कहरू लाग्न सक्छन्।"</string>
<string name="lost_internet_access_switch" msgid="9218006455779873700">"मोबाइलमा स्विच गर्नुहोस्"</string>
<string name="lost_internet_access_cancel" msgid="6577871064062518744">"Wi‑Fi मा कायम रहनुहोस्"</string>
@@ -1020,7 +1020,7 @@
<string name="wifi_advanced_ssid_title" msgid="4229741334913894856">"SSID"</string>
<string name="wifi_advanced_mac_address_title" msgid="1162782083754021737">"म्याक ठेगाना"</string>
<string name="wifi_advanced_ip_address_title" msgid="2708185994512829071">"IP ठेगाना"</string>
- <string name="wifi_details_title" msgid="2164042631550920157">"नेटवर्कसम्बन्धी विवरणहरू"</string>
+ <string name="wifi_details_title" msgid="2164042631550920157">"नेटवर्कको विवरण"</string>
<string name="wifi_details_subnet_mask" msgid="53396707004763012">"सबनेट मास्क"</string>
<string name="wifi_details_dns" msgid="1118251455740116559">"DNS"</string>
<string name="wifi_details_ipv6_address_header" msgid="1642310137145363299">"IPv6 ठेगानाहरू"</string>
@@ -1068,8 +1068,8 @@
<string name="wifi_hotspot_password_title" msgid="4289338152595154889">"हटस्पटको पासवर्ड"</string>
<string name="wifi_hotspot_ap_band_title" msgid="3485744480410441949">"AP ब्यान्ड"</string>
<string name="wifi_hotspot_footer_info_regular" msgid="3876006922622827363">"आफ्ना अन्य यन्त्रहरूका लागि Wi‑Fi नेटवर्क सिर्जना गर्न हटस्पट प्रयोग गर्नुहोस्। हटस्पटले तपाईंको मोबाइल डेटा जडान प्रयोग गरेर इन्टरनेट प्रदान गर्दछ। अतिरिक्त मोबाइल डेटाको शुल्क लाग्न सक्छ।"</string>
- <string name="wifi_hotspot_footer_info_local_only" msgid="3339582350894639261">"अनुप्रयोगहरूले नजिकैका यन्त्रहरूसँग सामग्री आदान प्रदान गर्न एउटा हटस्पट सिर्जना गर्न सक्छन्।"</string>
- <string name="wifi_hotspot_auto_off_title" msgid="7416022590415189590">"Wi‑Fi हटस्पट स्वतः निष्क्रिय पार्नुहोस्"</string>
+ <string name="wifi_hotspot_footer_info_local_only" msgid="3339582350894639261">"एपहरूले नजिकैका यन्त्रहरूसँग सामग्री आदान प्रदान गर्न एउटा हटस्पट सिर्जना गर्न सक्छन्।"</string>
+ <string name="wifi_hotspot_auto_off_title" msgid="7416022590415189590">"स्वतः Wi‑Fi हटस्पट अफ गर्नुहोस्"</string>
<string name="wifi_hotspot_auto_off_summary" msgid="3866769400624802105">"कुनै पनि यन्त्र जडान नहुँदा Wi‑Fi हटस्पट स्वतः निष्क्रिय हुनेछ"</string>
<string name="wifi_tether_starting" msgid="7676952148471297900">"हटस्पट खुल्दै..."</string>
<string name="wifi_tether_stopping" msgid="7478561853791953349">"हटस्पट बन्द गरिँदै..."</string>
@@ -1174,7 +1174,7 @@
<string name="color_mode_title" msgid="8164858320869449142">"रङहरू"</string>
<string name="color_mode_option_natural" msgid="1292837781836645320">"प्राकृतिक"</string>
<string name="color_mode_option_boosted" msgid="453557938434778933">"बुस्ट गरिएको"</string>
- <string name="color_mode_option_saturated" msgid="7758384943407859851">"परिपूर्ण पारिएको"</string>
+ <string name="color_mode_option_saturated" msgid="7758384943407859851">"स्याचुरेटेड"</string>
<string name="color_mode_option_automatic" msgid="6572718611315165117">"अनुकूलनीय"</string>
<string name="color_mode_summary_natural" msgid="1247153893843263340">"सही रङहरू मात्र प्रयोग गर्नुहोस्"</string>
<string name="color_mode_summary_automatic" msgid="6066740785261330514">"स्पष्ट र सही रङहरूबीच समायोजन गर्नुहोस्"</string>
@@ -1229,7 +1229,7 @@
<string name="night_display_summary_on_auto_mode_custom" msgid="2200631112239399233">"<xliff:g id="ID_1">%1$s</xliff:g> मा स्वतः निष्क्रिय हुनेछ"</string>
<string name="night_display_summary_on_auto_mode_twilight" msgid="8386769601369289561">"सूर्योदयको बेला स्वतः निष्क्रिय हुनेछ"</string>
<string name="night_display_activation_on_manual" msgid="8379477527072027346">"अहिले नै सक्रिय गर्नुहोस्"</string>
- <string name="night_display_activation_off_manual" msgid="7776082151269794201">"अहिले नै निष्क्रिय पार्नुहोस्"</string>
+ <string name="night_display_activation_off_manual" msgid="7776082151269794201">"अहिले नै अफ गर्नुहोस्"</string>
<string name="night_display_activation_on_twilight" msgid="5610294051700287249">"सूर्योदयसम्म सक्रिय गर्नुहोस्"</string>
<string name="night_display_activation_off_twilight" msgid="6846727701281556110">"सूर्यास्तसम्म निष्क्रिय पार्नुहोस्"</string>
<string name="night_display_activation_on_custom" msgid="4761140206778957611">"<xliff:g id="ID_1">%1$s</xliff:g> सम्म सक्रिय गर्नुहोस्"</string>
@@ -1354,7 +1354,7 @@
<string name="status_data_state" msgid="4538705798873861963">"मोबाइल सञ्जाल वस्तुस्थिति"</string>
<string name="status_esim_id" msgid="9201767073386770286">"EID"</string>
<string name="status_service_state" msgid="4406215321296496234">"सेवा स्थिति"</string>
- <string name="status_signal_strength" msgid="4302597886933728789">"सङ्केत क्षमता"</string>
+ <string name="status_signal_strength" msgid="4302597886933728789">"सिग्नलको क्षमता"</string>
<string name="status_roaming" msgid="5191044997355099561">"रोमिङ"</string>
<string name="status_operator" msgid="6017986100643755390">"सञ्जाल"</string>
<string name="status_wifi_mac_address" msgid="3868452167971295995">"Wi-Fi म्याक ठेगाना"</string>
@@ -1389,7 +1389,7 @@
<string name="sd_format" product="nosdcard" msgid="918370986254863144">"USB भण्डारण मेटाउनुहोस्"</string>
<string name="sd_format" product="default" msgid="1346245995138883960">"SD कार्ड मेटाउनुहोस्"</string>
<string name="sd_format_summary" product="nosdcard" msgid="1179857727779521920">"आन्तरिक USB भण्डारणमा सम्पूर्ण डेटाहरू मेटाउँछ, जस्तै सङ्गीत र तस्बिरहरू"</string>
- <string name="sd_format_summary" product="default" msgid="4284028411908176234">"SD कार्डमा सबै डेटा जस्तै सङ्गीत र फोटाहरू मेटाउँछ"</string>
+ <string name="sd_format_summary" product="default" msgid="4284028411908176234">"SD कार्डमा सबै डेटा जस्तै सङ्गीत र फोटोहरू मेटाउँछ"</string>
<string name="memory_clear_cache_title" msgid="4306793268129306684">"क्यास डेटा हटाउनु हुन्छ?"</string>
<string name="memory_clear_cache_message" msgid="6723120398411410031">"यसले सबै अनुप्रयोगहरूको लागि केस गरिएको डेटा हटाउँछ।"</string>
<string name="mtp_ptp_mode_summary" msgid="6074099855478444183">"MTP वा PTP प्रकार्य सक्रिय छ"</string>
@@ -1424,7 +1424,7 @@
<string name="usb_mtp_title" msgid="6893938968831995500">"मिडिया उपकरण (MTP)"</string>
<string name="usb_mtp_summary" msgid="4427354560399094322">"तपाईँलाई विन्डोजमा मिडिया फाइलहरू सार्न वा म्याकमा एन्ड्रोइड फाइल सार्न अनुमति दिन्छ (हेर्नुहोस् (www.android.com/filetransfer)"</string>
<string name="usb_ptp_title" msgid="6629335976394685361">"क्यामेरा (PTP)"</string>
- <string name="usb_ptp_summary" msgid="460425275251168189">"तपाईँलाई क्यामेरा सफ्टवेयर प्रयोग गरेर फोटाहरू स्थानान्तरण गर्न, र MTP समर्थन नगर्ने कम्प्युटरमा कुनै पनि फाइलहरू स्थानान्तरण दिन्छ।"</string>
+ <string name="usb_ptp_summary" msgid="460425275251168189">"तपाईँलाई क्यामेरा सफ्टवेयर प्रयोग गरेर फोटोहरू स्थानान्तरण गर्न, र MTP समर्थन नगर्ने कम्प्युटरमा कुनै पनि फाइलहरू स्थानान्तरण दिन्छ।"</string>
<string name="usb_midi_title" msgid="8626512517313340943">"MIDI"</string>
<string name="usb_midi_summary" msgid="3607444815743771712">"MIDI द्वारा सक्रिय अनुप्रयोगहरूलाई तपाईंको कम्प्युटरमा USB मार्फत MIDI सफ्टवेयरसँग काम गर्न दिन्छ।"</string>
<string name="storage_other_users" msgid="1055693465220962928">"अन्य प्रयोगकर्ताहरू"</string>
@@ -1457,7 +1457,7 @@
<string name="storage_detail_other" msgid="9164851767437306618">"अन्य"</string>
<string name="storage_detail_system" msgid="6784247618772153283">"प्रणाली"</string>
<string name="storage_detail_explore" msgid="8206900269596580264">"<xliff:g id="NAME">^1</xliff:g> अन्वेषण गर्नुहोस्"</string>
- <string name="storage_detail_dialog_other" msgid="5073511663616043370">"अन्यमा अनुप्रयोगहरूले सुरक्षित गेरका साझा फाइल, इन्टरनेट वा ब्लुटुथबाट डाउनलोड गरिएका फाइल, Android का फाइलहरू र यस्तै थप कुराहरू पर्छन्। \n\nयो <xliff:g id="NAME">^1</xliff:g> का देख्न सकिने सामग्रीहरू हेर्न अन्वेषण गर्नुहोस् नामक विकल्पमा ट्याप गर्नुहोस्।"</string>
+ <string name="storage_detail_dialog_other" msgid="5073511663616043370">"अन्यमा एपहरूले सुरक्षित गेरका साझा फाइल, इन्टरनेट वा ब्लुटुथबाट डाउनलोड गरिएका फाइल, Android का फाइलहरू र यस्तै थप कुराहरू पर्छन्। \n\nयो <xliff:g id="NAME">^1</xliff:g> का देख्न सकिने सामग्रीहरू हेर्न अन्वेषण गर्नुहोस् नामक विकल्पमा ट्याप गर्नुहोस्।"</string>
<string name="storage_detail_dialog_system" msgid="1472572861360014226">"प्रणालीमा Android संस्करण <xliff:g id="VERSION">%s</xliff:g> चलाउनका लागि प्रयोग भएका फाइलहरू समावेश छन्"</string>
<string name="storage_detail_dialog_user" msgid="1663117417635010371">"<xliff:g id="USER_0">^1</xliff:g> ले तस्बिर, सङ्गीत, एप वा अन्य डेटा सुरक्षित गर्नुभएको हुनसक्छ, जसले <xliff:g id="SIZE">^2</xliff:g> भण्डारण ओगटिरहेको छ। \n\nविवरणहरू हेर्न <xliff:g id="USER_1">^1</xliff:g> मा स्विच गर्नुहोस्।"</string>
<string name="storage_wizard_init_title" msgid="3407283236421089014">"तपाईँको <xliff:g id="NAME">^1</xliff:g> सेट गर्नुहोस्"</string>
@@ -1480,7 +1480,7 @@
<string name="storage_wizard_migrate_confirm_body" msgid="7297723787416643076"><b>"कार्यले करिब <xliff:g id="TIME">^1</xliff:g> लिन्छ। यसले <xliff:g id="NAME">^3</xliff:g> मा <xliff:g id="SIZE">^2</xliff:g> खाली गर्छ।"</b></string>
<string name="storage_wizard_migrate_confirm_next" msgid="6539804689462991087">"सार्नुहोस्"</string>
<string name="storage_wizard_migrate_progress_title" msgid="7542196688665109833">"डेटा सार्दै..."</string>
- <string name="storage_wizard_migrate_details" msgid="4269509141637554985">"सार्दाको समयमा: \n• <xliff:g id="NAME">^1</xliff:g> नहटाउनुहोस्। \n• केही अनुप्रयोगहरूले सही काम गर्ने छैन। \n• यन्त्र चार्जमा राख्नुहोस्।"</string>
+ <string name="storage_wizard_migrate_details" msgid="4269509141637554985">"सार्दाको समयमा: \n• <xliff:g id="NAME">^1</xliff:g> नहटाउनुहोस्। \n• केही एपहरूले सही काम गर्ने छैन। \n• यन्त्र चार्जमा राख्नुहोस्।"</string>
<string name="storage_wizard_ready_title" msgid="4905921139763520341">"तपाईंको <xliff:g id="NAME">^1</xliff:g> प्रयोगका लागि तयार छ"</string>
<string name="storage_wizard_ready_external_body" msgid="8785407468656286236">"तपाईँको <xliff:g id="NAME">^1</xliff:g> तस्बिर र अन्य मिडिया प्रयोग गर्न सबै सेट छ।"</string>
<string name="storage_wizard_ready_internal_body" msgid="2258287496678469217">"तपाईँको नयाँ <xliff:g id="NAME">^1</xliff:g> ले काम गर्दैछ। \n\n यो यन्त्रमा तस्बिरहरू, फाइलहरू, र एप डेटा सार्न, सेटिङ &gt मा जानुहोस्; भण्डारण गर्नुहोस्।"</string>
@@ -1511,14 +1511,14 @@
<string name="storage_wizard_migrate_v2_body" product="default" msgid="3211214309775524554">"तपाईं यो <xliff:g id="NAME">^1</xliff:g> मा फाइल, मिडिया र निश्चित एपहरू सार्न सक्नुहुन्छ। \n\nयस कार्यले तपाईंको फोनको भण्डारणबाट <xliff:g id="SIZE">^2</xliff:g> खाली गर्ने छ र यसो गर्न लगभग <xliff:g id="DURATION">^3</xliff:g> लाग्छ।"</string>
<string name="storage_wizard_migrate_v2_checklist" msgid="6283777617014793600">"सार्ने क्रममा:"</string>
<string name="storage_wizard_migrate_v2_checklist_media" msgid="4626548613088549096">"<xliff:g id="NAME">^1</xliff:g> लाई नहटाउनुहोस्"</string>
- <string name="storage_wizard_migrate_v2_checklist_apps" msgid="6041914027863793837">"केही अनुप्रयोगहरूले काम गर्ने छैनन"</string>
+ <string name="storage_wizard_migrate_v2_checklist_apps" msgid="6041914027863793837">"केही एपहरूले काम गर्ने छैनन"</string>
<string name="storage_wizard_migrate_v2_checklist_battery" product="tablet" msgid="5086689918108465503">"यो ट्याब्लेटलाई चार्जमा राख्नुहोस्"</string>
<string name="storage_wizard_migrate_v2_checklist_battery" product="default" msgid="7801835366851130972">"यो फोनलाई चार्जमा राख्नुहोस्"</string>
<string name="storage_wizard_migrate_v2_now" msgid="6818811520564682413">"सामग्री सार्नुहोस्"</string>
<string name="storage_wizard_migrate_v2_later" msgid="4909412563144649085">"सामग्री पछि सार्नुहोस्"</string>
<string name="storage_wizard_migrate_progress_v2_title" msgid="1796255772658203586">"सामग्री सार्दै…"</string>
<string name="storage_wizard_slow_v2_title" msgid="4662009769135525740">"<xliff:g id="NAME">^1</xliff:g> ढिलो छ"</string>
- <string name="storage_wizard_slow_v2_body" msgid="4443996335261861797">"तपाईं अझै यो <xliff:g id="NAME_0">^1</xliff:g> प्रयोग गर्न सक्नुहुन्छ तर यो निकै ढिलो हुन सक्छ। \n\nयो <xliff:g id="NAME_1">^2</xliff:g> मा सुरक्षित गरिएका अनुप्रयोगहरूले राम्ररी काम नगर्न सक्छन् र सामग्री स्थानान्तरण गर्दा लामो समय लाग्न सक्छ। \n\nकुनै अझ छिटो <xliff:g id="NAME_2">^3</xliff:g> प्रयोग गरी हेर्नुहोस् वा पोर्टेबल भण्डारणका लागि यसको साटो <xliff:g id="NAME_3">^4</xliff:g> प्रयोग गर्नुहोस्।"</string>
+ <string name="storage_wizard_slow_v2_body" msgid="4443996335261861797">"तपाईं अझै यो <xliff:g id="NAME_0">^1</xliff:g> प्रयोग गर्न सक्नुहुन्छ तर यो निकै ढिलो हुन सक्छ। \n\nयो <xliff:g id="NAME_1">^2</xliff:g> मा सुरक्षित गरिएका एपहरूले राम्ररी काम नगर्न सक्छन् र सामग्री स्थानान्तरण गर्दा लामो समय लाग्न सक्छ। \n\nकुनै अझ छिटो <xliff:g id="NAME_2">^3</xliff:g> प्रयोग गरी हेर्नुहोस् वा पोर्टेबल भण्डारणका लागि यसको साटो <xliff:g id="NAME_3">^4</xliff:g> प्रयोग गर्नुहोस्।"</string>
<string name="storage_wizard_slow_v2_start_over" msgid="1686964124972424100">"फेरि सुरु गर्नुहोस्"</string>
<string name="storage_wizard_slow_v2_continue" msgid="2320238517431613392">"जारी राख्नुहोस्"</string>
<string name="storage_wizard_ready_v2_external_body" msgid="5803422587027895664">"तपाईं सामग्रीलाई <xliff:g id="NAME">^1</xliff:g> मा सार्न सक्नुहुन्छ"</string>
@@ -1596,8 +1596,8 @@
<string name="master_clear_desc_erase_external_storage" product="default" msgid="9003555775524798797">\n" \n सङ्गीत, तस्वीरहरू, र अन्य प्रयोगकर्ता डेटा मेटाउनका लागि, "<b>" SD कार्ड "</b>" मेटाउनु पर्छ।"</string>
<string name="erase_external_storage" product="nosdcard" msgid="8989746770347525207">"USB भण्डारण मेटाउनुहोस्"</string>
<string name="erase_external_storage" product="default" msgid="194249742376770215">"SD कार्ड मेटाउनुहोस्"</string>
- <string name="erase_external_storage_description" product="nosdcard" msgid="8020275102431496261">"आन्तरिक USB भण्डारणमा सबै डेटा मेटाउनुहोस्, जस्तै सङ्गीत वा फोटाहरू"</string>
- <string name="erase_external_storage_description" product="default" msgid="5029355708082861798">"SD कार्डबाट सबै डाटाहरू जस्तै सङ्गीत वा फोटाहरू मेटाउनुहोस्"</string>
+ <string name="erase_external_storage_description" product="nosdcard" msgid="8020275102431496261">"आन्तरिक USB भण्डारणमा सबै डेटा मेटाउनुहोस्, जस्तै सङ्गीत वा फोटोहरू"</string>
+ <string name="erase_external_storage_description" product="default" msgid="5029355708082861798">"SD कार्डबाट सबै डाटाहरू जस्तै सङ्गीत वा फोटोहरू मेटाउनुहोस्"</string>
<string name="master_clear_button_text" product="tablet" msgid="8000547818499182920">"सबै डेटा मेट्नुहोस्"</string>
<string name="master_clear_button_text" product="default" msgid="8000547818499182920">"सबै डेटा मेट्नुहोस्"</string>
<string name="master_clear_final_desc" msgid="5189365498015339294">"तपाईंका सबै व्यक्तिगत जानकारी र डाउनलोड गरिएका एपहरू मेटिने छन्। तपाईं यस कार्यलाई अन्डू गर्न सक्नुहुन्न!"</string>
@@ -1629,7 +1629,7 @@
<string name="bluetooth_tethering_off_subtext_config" msgid="3981528184780083266">"ब्लुटुथमार्फत यो <xliff:g id="DEVICE_NAME">%1$d</xliff:g> को इन्टरनेट जडान साझा गर्दै"</string>
<string name="bluetooth_tethering_overflow_error" msgid="6946561351369376943">"<xliff:g id="MAXCONNECTION">%1$d</xliff:g> उपकरणहरूभन्दा बढीसँग टेदर गर्न सक्दैन।"</string>
<string name="bluetooth_untether_blank" msgid="5428300773782256084">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> अनटेथर गरिने छ।"</string>
- <string name="tethering_footer_info" msgid="8019555174339154124">"आफ्नो मोबाइल डेटा जडानमार्फत अन्य यन्त्रहरूलाई इन्टरनेट उपलब्ध गराउन हटस्पट र टेदरिङ प्रयोग गर्नुहोस्। नजिकैका यन्त्रहरूसँग सामग्री आदान प्रदान गर्नाका निम्ति अनुप्रयोगहरूले हटस्पट सिर्जना गर्न पनि सक्छन्।"</string>
+ <string name="tethering_footer_info" msgid="8019555174339154124">"आफ्नो मोबाइल डेटा जडानमार्फत अन्य यन्त्रहरूलाई इन्टरनेट उपलब्ध गराउन हटस्पट र टेदरिङ प्रयोग गर्नुहोस्। नजिकैका यन्त्रहरूसँग सामग्री आदान प्रदान गर्नाका निम्ति एपहरूले हटस्पट सिर्जना गर्न पनि सक्छन्।"</string>
<string name="tethering_help_button_text" msgid="7653022000284543996">"मद्दत"</string>
<string name="network_settings_title" msgid="8516526011407061679">"मोबाइल नेटवर्क"</string>
<string name="manage_mobile_plan_title" msgid="3312016665522553062">"मोबाईल योजना"</string>
@@ -1656,7 +1656,7 @@
</plurals>
<string name="location_category_recent_location_access" msgid="286059523360285026">"हालसालै राखिएको स्थानमाथिको पहुँच"</string>
<string name="location_recent_location_access_view_details" msgid="2051602261436245905">"विवरणहरू हेर्नुहोस्"</string>
- <string name="location_no_recent_apps" msgid="77502059586413278">"हाल कुनै पनि अनुप्रयोगहरूले स्थान अनुरोध गरिएका छैनन्"</string>
+ <string name="location_no_recent_apps" msgid="77502059586413278">"अहिले कुनै पनि एपहरूले स्थानको जानकारी मागेका छैनन्"</string>
<string name="location_no_recent_accesses" msgid="6289916310397279890">"कुनै पनि अनुप्रयोगले हाल स्थानमाथि पहुँच गरेको छैन"</string>
<string name="location_high_battery_use" msgid="7177199869979522663">"उच्च ब्याट्री प्रयोग"</string>
<string name="location_low_battery_use" msgid="5030448574501435888">"कम ब्याट्री प्रयोग"</string>
@@ -1670,8 +1670,8 @@
<string name="location_neighborhood_level" msgid="8459352741296587916">"तपाईँको स्थानलाई सीघ्र अनुमान गर्न अनुप्रयोगहरूलाई Google स्थान सेवा प्रयोग गर्न अनुमति दिनुहोस्। बेनामी स्थान डेटा भेला गरिने छ र Googleमा पठाइने छ।"</string>
<string name="location_neighborhood_level_wifi" msgid="6120133551482003840">"वाइ-फाइद्वारा निर्धारित स्थान"</string>
<string name="location_gps" msgid="688049341158297763">"GPS सेटेलाइट"</string>
- <string name="location_street_level" product="tablet" msgid="4459804798444296650">"तपाईँको स्थान इङ्गित गर्नको लागि तपाईँको ट्याब्लेटमा अनुप्रयोगलाई GPS को प्रयोग गर्न दिनुहोस्"</string>
- <string name="location_street_level" product="default" msgid="7407688345675450051">"तपाईँको स्थान इङ्गित गर्नको लागि तपाईँको फोनमा अनुप्रयोगलाई GPS को प्रयोग गर्न दिनुहोस्"</string>
+ <string name="location_street_level" product="tablet" msgid="4459804798444296650">"तपाईँको स्थान इङ्गित गर्नको लागि तपाईँको ट्याब्लेटमा एपलाई GPS को प्रयोग गर्न दिनुहोस्"</string>
+ <string name="location_street_level" product="default" msgid="7407688345675450051">"तपाईँको स्थान इङ्गित गर्नको लागि तपाईँको फोनमा एपलाई GPS को प्रयोग गर्न दिनुहोस्"</string>
<string name="assisted_gps" msgid="5411780261117055175">"सहायोगी GPSको प्रयोग गर्नुहोस्"</string>
<string name="assisted_gps_enabled" msgid="2561022181775725369">"GPS लाई सहयोग पुर्याउन सर्भरको प्रयोग गर्नुहोस् (सञ्जाल प्रयोग घटाउन अनचेक गर्नुहोस्)"</string>
<string name="assisted_gps_disabled" msgid="6448758788217415937">"GPS लाई मद्दत पुर्याउन सर्भर प्रयोग गर्नुहोस् (GPS कार्यसम्पादन सुधार्न अनचेक गर्नुहोस्)"</string>
@@ -1828,7 +1828,7 @@
<string name="clear_user_data_text" msgid="8894073247302821764">"भण्डारण खाली गर्नुहोस्"</string>
<string name="app_factory_reset" msgid="8718986000278776272">"अद्यावधिकहरू अस्थापना गर्नुहोस्"</string>
<string name="auto_launch_enable_text" msgid="3372898942144027341">"केही कारवाहीका लागि पूर्वनिर्धारतिबाट यो एप सुरु गर्न तपाईँले छान्नु भयो।"</string>
- <string name="always_allow_bind_appwidgets_text" msgid="2286211654774611037">"तपाईंले यो अनुप्रयोगलाई विजेटहरू सिर्जना गर्न र तिनीहरूको डेटा पहुँच गर्न अनुमतिको लागि छान्नुभयो।"</string>
+ <string name="always_allow_bind_appwidgets_text" msgid="2286211654774611037">"तपाईंले यो एपलाई विजेटहरू सिर्जना गर्न र तिनीहरूको डेटा पहुँच गर्न अनुमतिको लागि छान्नुभयो।"</string>
<string name="auto_launch_disable_text" msgid="8560921288036801416">"कुनै पूर्वनिर्धारित सेट गरिएको छैन।"</string>
<string name="clear_activities" msgid="2068014972549235347">"पूर्वनिर्धारितहरू मेटाउनुहोस्"</string>
<string name="screen_compatibility_text" msgid="1768064020294301496">"तपाईंको स्क्रिनका लागि यस एप डिजाइन नहुन सक्छ। तपाईंको स्क्रिनमा कसरी मिल्छ तपाईं यहाँ नियन्त्रण गर्न सक्नु हुन्छ।"</string>
@@ -1882,9 +1882,9 @@
<string name="does_not_exist" msgid="4821267479183197109">"एप छैन"</string>
<string name="invalid_location" msgid="8057409982223429673">"स्थापना स्थान वैध छैन।"</string>
<string name="system_package" msgid="1824541892695233351">"प्रणाली अपडेटहरू बाह्य मिडियामा स्थापित गर्न सकिँदैनन्।"</string>
- <string name="move_error_device_admin" msgid="6640501923867066901">"बाह्य मिडियामा यन्त्र प्रशासक अनुप्रयोगलाई स्थापना गर्न सकिँदैन"</string>
+ <string name="move_error_device_admin" msgid="6640501923867066901">"बाह्य मिडियामा यन्त्र प्रशासक एपलाई स्थापना गर्न सकिँदैन"</string>
<string name="force_stop_dlg_title" msgid="8822779487097246675">"बलपूर्वक रोक्ने हो?"</string>
- <string name="force_stop_dlg_text" msgid="7435245769456493398">"यदि तपाईँले अनुप्रयोगलाई जबर्जस्ती रोक्नु भएको खण्डमा त्यसले चाहेअनुसार काम नगर्न सक्छ।"</string>
+ <string name="force_stop_dlg_text" msgid="7435245769456493398">"यदि तपाईँले एपलाई जबर्जस्ती रोक्नु भएको खण्डमा त्यसले चाहेअनुसार काम नगर्न सक्छ।"</string>
<string name="app_install_location_title" msgid="5121617802063021720">"मन परेको स्थापना स्थान"</string>
<string name="app_install_location_summary" msgid="109719780117187797">"नयाँ अनुप्रयोगका लागि रुचाइएको स्थापना स्थान बदल्नुहोस्"</string>
<string name="app_disable_dlg_positive" msgid="5508828271100168073">"एप असक्षम गर्नुहोस्"</string>
@@ -2195,8 +2195,8 @@
<string name="print_settings" msgid="7886184656544483072">"प्रिन्टिङ"</string>
<string name="print_settings_summary_no_service" msgid="634173687975841526">"निष्क्रिय छ"</string>
<plurals name="print_settings_summary" formatted="false" msgid="7580293760281445137">
- <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> वटा छाप्ने सेवा खुला छन्</item>
- <item quantity="one">१ वटा छाप्ने सेवा खुला छ</item>
+ <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> वटा प्रिन्टर खुला छन्</item>
+ <item quantity="one">१ वटा प्रिन्टर खुला छ</item>
</plurals>
<plurals name="print_jobs_summary" formatted="false" msgid="6180308415569432845">
<item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> छपाइ कार्यहरू</item>
@@ -2234,12 +2234,12 @@
<string name="power_discharge_remaining" msgid="3461915627093471868">"<xliff:g id="REMAIN">%1$s</xliff:g> बाँकी"</string>
<string name="power_charge_remaining" msgid="2730510256218879651">"<xliff:g id="UNTIL_CHARGED">%1$s</xliff:g> चार्जमा"</string>
<string name="background_activity_title" msgid="7207836362312111483">"पृष्ठभूमिको प्रतिबन्ध"</string>
- <string name="background_activity_summary" msgid="582372194738538145">"अनुप्रयोगलाई पृष्ठभूमिमा चल्न अनुमति दिनुहोस्"</string>
- <string name="background_activity_summary_disabled" msgid="457944930942085876">"अनुप्रयोगलाई पृष्ठभूमिमा चल्न दिइएको छैन"</string>
+ <string name="background_activity_summary" msgid="582372194738538145">"एपलाई पृष्ठभूमिमा चल्न अनुमति दिनुहोस्"</string>
+ <string name="background_activity_summary_disabled" msgid="457944930942085876">"एपलाई पृष्ठभूमिमा चल्न दिइएको छैन"</string>
<string name="background_activity_summary_whitelisted" msgid="4713321059375873828">"पृष्ठभूमिको प्रयोगमा प्रतिबन्ध लगाउन सकिँदैन"</string>
<string name="background_activity_warning_dialog_title" msgid="2170790412855899678">"पृष्ठभूमिको गतिविधिलाई सीमित गर्ने हो?"</string>
<string name="background_activity_warning_dialog_text" msgid="8242749826732375096">"तपाईंले कुनै अनुप्रयोगको पृष्ठभूमिको गतिविधिलाई सीमित गर्नुभयो भने यसले सही तरिकाले काम नगर्न सक्छ"</string>
- <string name="background_activity_disabled_dialog_text" msgid="4234598000779459640">"यो अनुप्रयोगलाई ब्याट्री अप्टिमाइज गर्न भनी सेट नगरिएको हुनाले तपाईं यसमा बन्देज लगाउन सक्नुहुन्न।\n\nअनुप्रयोगमा बन्देज लगाउन पहिले ब्याट्री अप्टिमाइजेसन सुविधा सक्रिय गर्नुहोस्।"</string>
+ <string name="background_activity_disabled_dialog_text" msgid="4234598000779459640">"यो एपलाई ब्याट्री अप्टिमाइज गर्न भनी सेट नगरिएको हुनाले तपाईं यसमा बन्देज लगाउन सक्नुहुन्न।\n\nअनुप्रयोगमा बन्देज लगाउन पहिले ब्याट्री अप्टिमाइजेसन सुविधा सक्रिय गर्नुहोस्।"</string>
<string name="device_screen_usage" msgid="4470485475363132750">"पूर्ण चार्ज भएदेखि स्क्रिनको प्रयोग"</string>
<string name="power_usage_list_summary" msgid="4314438658308211057">"पूर्ण चार्ज भएदेखि ब्याट्रीको प्रयोग"</string>
<string name="screen_usage_summary" msgid="263396144684078341">"पूर्ण चार्ज भएदेखि स्क्रिन सक्रिय रहेको समय"</string>
@@ -2268,9 +2268,9 @@
<string name="controls_subtitle" msgid="6920199888882834620">"उर्जा प्रयोग मिलाउनुहोस्"</string>
<string name="packages_subtitle" msgid="6506269487892204413">"सम्मिलित प्याकेजहरू"</string>
<string name="battery_tip_summary_title" msgid="2750922152518825526">"एपहरू सामान्य रूपमा चलिरहेका छन्"</string>
- <string name="battery_tip_summary_summary" product="default" msgid="6294900413896440006">"फोनले पृष्ठभूमिमा ब्याट्री सामान्य खपत गरेको छ"</string>
- <string name="battery_tip_summary_summary" product="tablet" msgid="5280099016800644130">"ट्याब्लेटले पृष्ठभूमिमा ब्याट्री सामान्य खपत गरेको छ"</string>
- <string name="battery_tip_summary_summary" product="device" msgid="4459840492610842705">"यन्त्रले पृष्ठभूमिमा ब्याट्री सामान्य खपत गरेको छ"</string>
+ <string name="battery_tip_summary_summary" product="default" msgid="6294900413896440006">"फोनले पृष्ठभूमिमा सदाको जति नै ब्याट्री खपत गरेको छ"</string>
+ <string name="battery_tip_summary_summary" product="tablet" msgid="5280099016800644130">"ट्याब्लेटले पृष्ठभूमिमा सदाको जति नै ब्याट्री खपत गरेको छ"</string>
+ <string name="battery_tip_summary_summary" product="device" msgid="4459840492610842705">"यन्त्रले पृष्ठभूमिमा सदाको जति नै ब्याट्री खपत गरेको छ"</string>
<string name="battery_tip_low_battery_title" msgid="6784043681672161175">"ब्याट्रीको कम चार्ज क्षमता"</string>
<string name="battery_tip_low_battery_summary" msgid="9151355911381188604">"ब्याट्रीको चार्ज स्तर बढी समयसम्म कायम रहन सक्दैन"</string>
<string name="battery_tip_smart_battery_title" product="default" msgid="5517122075918038665">"आफ्नो फोनको ब्याट्रीको आयुमा सुधार गर्नुहोस्"</string>
@@ -2279,7 +2279,7 @@
<string name="battery_tip_smart_battery_summary" msgid="5344821856478265778">"ब्याट्री प्रबन्धकलाई सक्रिय गर्नुहोस्"</string>
<string name="battery_tip_early_heads_up_title" msgid="707163785378746813">"ब्याट्री सेभर सक्रिय गर्नुहोस्"</string>
<string name="battery_tip_early_heads_up_summary" msgid="4231489566422395156">"ब्याट्री सामान्यभन्दा पहिले सकिन सक्छ"</string>
- <string name="battery_tip_early_heads_up_done_title" msgid="112550885882648429">"ब्याट्री सेभर सक्रिय छ"</string>
+ <string name="battery_tip_early_heads_up_done_title" msgid="112550885882648429">"ब्याट्री सेभर अन छ"</string>
<string name="battery_tip_early_heads_up_done_summary" msgid="8692257022962771181">"केही सुविधाहरू सीमित हुन सक्छन्"</string>
<string name="battery_tip_high_usage_title" product="default" msgid="4103005178310487352">"फोन सामान्यभन्दा बढी प्रयोग भयो"</string>
<string name="battery_tip_high_usage_title" product="tablet" msgid="1019583260005768965">"ट्याब्लेट सामान्यभन्दा बढी प्रयोग भयो"</string>
@@ -2298,7 +2298,7 @@
<item quantity="one">%1$s माथि हालसालै बन्देज लगाइयो</item>
</plurals>
<plurals name="battery_tip_restrict_summary" formatted="false" msgid="984148373944071669">
- <item quantity="other">%2$d अनुप्रयोगहरूले पृष्ठभूमिमा धेरै ब्याट्री खपत गरेको छ</item>
+ <item quantity="other">%2$d एपहरूले पृष्ठभूमिमा धेरै ब्याट्री खपत गरेको छ</item>
<item quantity="one">%1$s ले पृष्ठभूमिमा धेरै ब्याट्री खपत गरेको छ</item>
</plurals>
<plurals name="battery_tip_restrict_handled_summary" formatted="false" msgid="469696766640020557">
@@ -2317,40 +2317,40 @@
<string name="battery_tip_unrestrict_app_dialog_message" msgid="8120081438825031335">"यो एप पृष्ठभूमिमा ब्याट्रीको प्रयोग गर्न सक्षम हुने छ। तपाईंको ब्याट्री अपेक्षा गरेभन्दा चाँडै सकिन सक्छ।"</string>
<string name="battery_tip_unrestrict_app_dialog_ok" msgid="9154938931448151479">"हटाउनुहोस्"</string>
<string name="battery_tip_unrestrict_app_dialog_cancel" msgid="7331148618292397166">"रद्द गर्नुहोस्"</string>
- <string name="battery_tip_dialog_summary_message" product="default" msgid="7244950433272770280">"तपाईंका अनुप्रयोगहरूले सामान्य मात्रामा ब्याट्रीको प्रयोग गर्दै छन्। अनुप्रयोगहरूले अत्यन्त धेरै ब्याट्रीको प्रयोग गरेको खण्डमा तपाईंको फोनले कारबाहीको सुझाव दिन्छ। \n\nतपाईंको ब्याट्री कम हुँदै गएको छ भने तपाईंले सधैँ ब्याट्री सेभर सक्रिय पार्न सक्नुहुन्छ।"</string>
- <string name="battery_tip_dialog_summary_message" product="tablet" msgid="1721081030632329647">"तपाईंका अनुप्रयोगहरूले सामान्य मात्रामा ब्याट्रीको प्रयोग गर्दै छन्। अनुप्रयोगहरूले अत्यन्त धेरै ब्याट्रीको प्रयोग गरेको खण्डमा तपाईंको ट्याब्लेटले कारबाहीको सुझाव दिन्छ। \n\nतपाईंको ब्याट्री कम हुँदै गएको छ भने तपाईंले सधैँ ब्याट्री सेभर सक्रिय पार्न सक्नुहुन्छ।"</string>
- <string name="battery_tip_dialog_summary_message" product="device" msgid="146872407040848465">"तपाईंका अनुप्रयोगहरूले सामान्य मात्रामा ब्याट्रीको प्रयोग गर्दै छन्। अनुप्रयोगहरूले अत्यन्त धेरै ब्याट्रीको प्रयोग गरेको खण्डमा तपाईंको यन्त्रले कारबाहीको सुझाव दिन्छ। \n\nतपाईंको ब्याट्री कम हुँदै गएको छ भने तपाईंले सधैँ ब्याट्री सेभर सक्रिय पार्न सक्नुहुन्छ।"</string>
+ <string name="battery_tip_dialog_summary_message" product="default" msgid="7244950433272770280">"तपाईंका एपहरूले सामान्य मात्रामा ब्याट्रीको प्रयोग गर्दै छन्। एपहरूले अत्यन्त धेरै ब्याट्रीको प्रयोग गरेको खण्डमा तपाईंको फोनले कारबाहीको सुझाव दिन्छ। \n\nतपाईंको ब्याट्री कम हुँदै गएको छ भने तपाईंले सधैँ ब्याट्री सेभर सक्रिय पार्न सक्नुहुन्छ।"</string>
+ <string name="battery_tip_dialog_summary_message" product="tablet" msgid="1721081030632329647">"तपाईंका एपहरूले सामान्य मात्रामा ब्याट्रीको प्रयोग गर्दै छन्। एपहरूले अत्यन्त धेरै ब्याट्रीको प्रयोग गरेको खण्डमा तपाईंको ट्याब्लेटले कारबाहीको सुझाव दिन्छ। \n\nतपाईंको ब्याट्री कम हुँदै गएको छ भने तपाईंले सधैँ ब्याट्री सेभर सक्रिय पार्न सक्नुहुन्छ।"</string>
+ <string name="battery_tip_dialog_summary_message" product="device" msgid="146872407040848465">"तपाईंका एपहरूले सामान्य मात्रामा ब्याट्रीको प्रयोग गर्दै छन्। एपहरूले अत्यन्त धेरै ब्याट्रीको प्रयोग गरेको खण्डमा तपाईंको यन्त्रले कारबाहीको सुझाव दिन्छ। \n\nतपाईंको ब्याट्री कम हुँदै गएको छ भने तपाईंले सधैँ ब्याट्री सेभर सक्रिय पार्न सक्नुहुन्छ।"</string>
<string name="smart_battery_manager_title" msgid="5744035036663849515">"ब्याट्री प्रबन्धक"</string>
<string name="smart_battery_title" msgid="4919670408532804351">"अनुप्रयोगहरूलाई स्वतः व्यवस्थित गर्नुहोस्"</string>
<string name="smart_battery_summary" msgid="640027046471198174">"तपाईंले प्रायः प्रयोग नगर्ने अनुप्रयोगहरूमा ब्याट्री सीमित गर्नुहोस्"</string>
- <string name="smart_battery_footer" product="default" msgid="3971715848890205632">"ब्याट्री प्रबन्धकले अनुप्रयोगहरूले ब्याट्री खर्च गरिरहेको पता लगाउँदा, तपाईंसँग यी अनुप्रयोगहरूलाई प्रतिबन्धित गर्ने विकल्प हुन्छ। प्रतिबन्धित अनुप्रयोगहरूले सही किसिमले काम नगर्न सक्छन् र सूचनाहरू आउन ढिलाइ हुन सक्छ।"</string>
- <string name="smart_battery_footer" product="tablet" msgid="3971715848890205632">"ब्याट्री प्रबन्धकले अनुप्रयोगहरूले ब्याट्री खर्च गरिरहेको पता लगाउँदा, तपाईंसँग यी अनुप्रयोगहरूलाई प्रतिबन्धित गर्ने विकल्प हुन्छ। प्रतिबन्धित अनुप्रयोगहरूले सही किसिमले काम नगर्न सक्छन् र सूचनाहरू आउन ढिलाइ हुन सक्छ।"</string>
- <string name="smart_battery_footer" product="device" msgid="3971715848890205632">"ब्याट्री प्रबन्धकले अनुप्रयोगहरूले ब्याट्री खर्च गरिरहेको पता लगाउँदा, तपाईंसँग यी अनुप्रयोगहरूलाई प्रतिबन्धित गर्ने विकल्प हुन्छ। प्रतिबन्धित अनुप्रयोगहरूले सही किसिमले काम नगर्न सक्छन् र सूचनाहरू आउन ढिलाइ हुन सक्छ।"</string>
+ <string name="smart_battery_footer" product="default" msgid="3971715848890205632">"ब्याट्री प्रबन्धकले एपहरूले ब्याट्री खर्च गरिरहेको पता लगाउँदा, तपाईंसँग यी अनुप्रयोगहरूलाई प्रतिबन्धित गर्ने विकल्प हुन्छ। प्रतिबन्धित एपहरूले सही किसिमले काम नगर्न सक्छन् र सूचनाहरू आउन ढिलाइ हुन सक्छ।"</string>
+ <string name="smart_battery_footer" product="tablet" msgid="3971715848890205632">"ब्याट्री प्रबन्धकले एपहरूले ब्याट्री खर्च गरिरहेको पता लगाउँदा, तपाईंसँग यी अनुप्रयोगहरूलाई प्रतिबन्धित गर्ने विकल्प हुन्छ। प्रतिबन्धित एपहरूले सही किसिमले काम नगर्न सक्छन् र सूचनाहरू आउन ढिलाइ हुन सक्छ।"</string>
+ <string name="smart_battery_footer" product="device" msgid="3971715848890205632">"ब्याट्री प्रबन्धकले एपहरूले ब्याट्री खर्च गरिरहेको पता लगाउँदा, तपाईंसँग यी अनुप्रयोगहरूलाई प्रतिबन्धित गर्ने विकल्प हुन्छ। प्रतिबन्धित एपहरूले सही किसिमले काम नगर्न सक्छन् र सूचनाहरू आउन ढिलाइ हुन सक्छ।"</string>
<string name="restricted_app_title" msgid="4957644700640127606">"प्रतिबन्धित एपहरू"</string>
<plurals name="restricted_app_summary" formatted="false" msgid="7609538735465186040">
<item quantity="other">ब्याट्रीको प्रयोग %1$d अनुप्रयोगहरूमा सीमित पार्दै</item>
<item quantity="one">ब्याट्रीको प्रयोग %1$d अनुप्रयोगहरूमा सीमित पार्दै</item>
</plurals>
<string name="restricted_app_time_summary" msgid="5205881852523135226">"<xliff:g id="TIME">%1$s</xliff:g> बजे बन्देज लगाइएको"</string>
- <string name="restricted_app_detail_footer" msgid="482460517275754465">"यी अनुप्रयोगहरूले पृष्ठभूमिमा ब्याट्री प्रयोग गरिरहेका छन्। प्रतिबन्ध लगाइएका अनुप्रयोगहरूले सही किसिमले काम नगर्न सक्छन् र सूचनाहरू आइपुग्न ढिलाइ हुन सक्छ।"</string>
+ <string name="restricted_app_detail_footer" msgid="482460517275754465">"यी एपहरूले पृष्ठभूमिमा ब्याट्री प्रयोग गरिरहेका छन्। प्रतिबन्ध लगाइएका एपहरूले सही किसिमले काम नगर्न सक्छन् र सूचनाहरू आइपुग्न ढिलाइ हुन सक्छ।"</string>
<string name="battery_auto_restriction_title" msgid="488905332794794076">"ब्याट्री प्रबन्धकको प्रयोग गर्नुहोस्"</string>
- <string name="battery_auto_restriction_summary" msgid="1638072655581821837">"अनुप्रयोगहरूले ब्याट्रीको चार्ज घटाउँदा थाहा पाउनुहोस्"</string>
- <string name="battery_manager_on" msgid="5626982529932239656">"सक्रिय छ / अनुप्रयोगहरूले ब्याट्रीको चार्ज घटाउने समय पत्ता लगाउँदै"</string>
+ <string name="battery_auto_restriction_summary" msgid="1638072655581821837">"एपहरूले ब्याट्रीको चार्ज घटाउँदा थाहा पाउनुहोस्"</string>
+ <string name="battery_manager_on" msgid="5626982529932239656">"सक्रिय छ / एपहरूले ब्याट्रीको चार्ज घटाउने समय पत्ता लगाउँदै"</string>
<string name="battery_manager_off" msgid="9114027524232450371">"निष्क्रिय छ"</string>
<plurals name="battery_manager_app_restricted" formatted="false" msgid="6721813588142691216">
<item quantity="other">%1$d अनुप्रयोगहरूमा प्रतिबन्ध लगाइयो</item>
<item quantity="one">%1$d अनुप्रयोगमा प्रतिबन्ध लगाइयो</item>
</plurals>
<string name="battery_header_title_alternate" msgid="1161081105263761743">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" "<font size="20">"<xliff:g id="UNIT">%</xliff:g>"</font></small>""</string>
- <string name="dialog_stop_title" msgid="4354544579084434590">"अनुप्रयोगलाई रोक्ने हो?"</string>
- <string name="dialog_stop_message" product="default" msgid="1361660290824872555">"<xliff:g id="APP">%1$s</xliff:g> ले तपाईंको फोनलाई सक्रिय गरिरहने हुनाले तपाईंको यन्त्रले सामान्य रूपमा ब्याट्रीको व्यवस्थापन गर्न सक्दैन।\n\nयो समस्याको समाधान गर्ने प्रयास गर्न तपाईं उक्त अनुप्रयोगलाई रोक्न सक्नुहुन्छ।\n\nयो समस्या भइरहेमा ब्याट्रीको कार्यसम्पादनमा सुधार गर्न तपाईंले उक्त अनुप्रयोगको स्थापना रद्द गर्नु पर्ने हुन सक्छ।"</string>
- <string name="dialog_stop_message" product="tablet" msgid="8948358625588034303">"<xliff:g id="APP">%1$s</xliff:g> ले तपाईंको ट्याब्लेटलाई सक्रिय गरिरहने हुनाले तपाईंको यन्त्रले सामान्य रूपमा ब्याट्रीको व्यवस्थापन गर्न सक्दैन।\n\nयो समस्याको समाधान गर्ने प्रयास गर्न तपाईं उक्त अनुप्रयोगलाई रोक्न सक्नुहुन्छ।\n\nयो समस्या भइरहेमा ब्याट्रीको कार्यसम्पादनमा सुधार गर्न तपाईंले उक्त अनुप्रयोगको स्थापना रद्द गर्नु पर्ने हुन सक्छ।"</string>
- <string name="dialog_stop_message" product="device" msgid="3550459274584461359">"<xliff:g id="APP">%1$s</xliff:g> ले तपाईंको यन्त्रलाई सक्रिय गरिरहने हुनाले तपाईंको यन्त्रले सामान्य रूपमा ब्याट्रीको व्यवस्थापन गर्न सक्दैन।\n\nयो समस्याको समाधान गर्ने प्रयास गर्न तपाईं उक्त अनुप्रयोगलाई रोक्न सक्नुहुन्छ।\n\nयो समस्या भइरहेमा ब्याट्रीको कार्यसम्पादनमा सुधार गर्न तपाईंले उक्त अनुप्रयोगको स्थापना रद्द गर्नु पर्ने हुन सक्छ।"</string>
+ <string name="dialog_stop_title" msgid="4354544579084434590">"एपलाई रोक्ने हो?"</string>
+ <string name="dialog_stop_message" product="default" msgid="1361660290824872555">"<xliff:g id="APP">%1$s</xliff:g> ले तपाईंको फोनलाई सक्रिय गरिरहने हुनाले तपाईंको यन्त्रले सामान्य रूपमा ब्याट्रीको व्यवस्थापन गर्न सक्दैन।\n\nयो समस्याको समाधान गर्ने प्रयास गर्न तपाईं उक्त एपलाई रोक्न सक्नुहुन्छ।\n\nयो समस्या भइरहेमा ब्याट्रीको कार्यसम्पादनमा सुधार गर्न तपाईंले उक्त अनुप्रयोगको स्थापना रद्द गर्नु पर्ने हुन सक्छ।"</string>
+ <string name="dialog_stop_message" product="tablet" msgid="8948358625588034303">"<xliff:g id="APP">%1$s</xliff:g> ले तपाईंको ट्याब्लेटलाई सक्रिय गरिरहने हुनाले तपाईंको यन्त्रले सामान्य रूपमा ब्याट्रीको व्यवस्थापन गर्न सक्दैन।\n\nयो समस्याको समाधान गर्ने प्रयास गर्न तपाईं उक्त एपलाई रोक्न सक्नुहुन्छ।\n\nयो समस्या भइरहेमा ब्याट्रीको कार्यसम्पादनमा सुधार गर्न तपाईंले उक्त अनुप्रयोगको स्थापना रद्द गर्नु पर्ने हुन सक्छ।"</string>
+ <string name="dialog_stop_message" product="device" msgid="3550459274584461359">"<xliff:g id="APP">%1$s</xliff:g> ले तपाईंको यन्त्रलाई सक्रिय गरिरहने हुनाले तपाईंको यन्त्रले सामान्य रूपमा ब्याट्रीको व्यवस्थापन गर्न सक्दैन।\n\nयो समस्याको समाधान गर्ने प्रयास गर्न तपाईं उक्त एपलाई रोक्न सक्नुहुन्छ।\n\nयो समस्या भइरहेमा ब्याट्रीको कार्यसम्पादनमा सुधार गर्न तपाईंले उक्त अनुप्रयोगको स्थापना रद्द गर्नु पर्ने हुन सक्छ।"</string>
<string name="dialog_stop_message_wakeup_alarm" product="default" msgid="5361295199859282104">"<xliff:g id="APP_0">%1$s</xliff:g>ले तपाईंको फोनलाई सक्रिय गरिरहने हुनाले तपाईंको फोनले सामान्य रूपमा ब्याट्रीको व्यवस्थापन गर्न सक्दैन।\n\nयो समस्या समाधान गर्ने प्रयास गर्न तपाईं <xliff:g id="APP_1">%1$s</xliff:g>लाई रोक्न सक्नुहुन्छ।\n\nयो समस्या भइरहेमा ब्याट्रीको कार्यसम्पादनमा सुधार गर्न तपाईंले उक्त अनुप्रयोगको स्थापना रद्द गर्नु पर्ने हुन सक्छ।"</string>
<string name="dialog_stop_message_wakeup_alarm" product="tablet" msgid="3270887403788487776">"<xliff:g id="APP_0">%1$s</xliff:g>ले तपाईंको ट्याब्लेटलाई सक्रिय गरिरहने हुनाले तपाईंको ट्याब्लेटले सामान्य रूपमा ब्याट्रीको व्यवस्थापन गर्न सक्दैन।\n\nयो समस्या समाधान गर्ने प्रयास गर्न तपाईं <xliff:g id="APP_1">%1$s</xliff:g>लाई रोक्न सक्नुहुन्छ।\n\nयो समस्या भइरहेमा ब्याट्रीको कार्यसम्पादनमा सुधार गर्न तपाईंले उक्त अनुप्रयोगको स्थापना रद्द गर्नु पर्ने हुन सक्छ।"</string>
<string name="dialog_stop_message_wakeup_alarm" product="device" msgid="6577512995315373362">"<xliff:g id="APP_0">%1$s</xliff:g>ले तपाईंको यन्त्रलाई सक्रिय गरिरहने हुनाले तपाईंको यन्त्रले सामान्य रूपमा ब्याट्रीको व्यवस्थापन गर्न सक्दैन।\n\nयो समस्या समाधान गर्ने प्रयास गर्न तपाईं <xliff:g id="APP_1">%1$s</xliff:g>लाई रोक्न सक्नुहुन्छ।\n\nयो समस्या भइरहेमा ब्याट्रीको कार्यसम्पादनमा सुधार गर्न तपाईंले उक्त अनुप्रयोगको स्थापना रद्द गर्नु पर्ने हुन सक्छ।"</string>
- <string name="dialog_stop_ok" msgid="5809052504018242928">"अनुप्रयोगलाई रोक्नुहोस्"</string>
- <string name="dialog_background_check_title" msgid="6289139150963983470">"पृष्ठभूमिको प्रयोग निष्क्रिय पार्ने र अनुप्रयोगलाई रोक्ने हो?"</string>
+ <string name="dialog_stop_ok" msgid="5809052504018242928">"एपलाई रोक्नुहोस्"</string>
+ <string name="dialog_background_check_title" msgid="6289139150963983470">"पृष्ठभूमिको प्रयोग निष्क्रिय पार्ने र एपलाई रोक्ने हो?"</string>
<string name="dialog_background_check_message" product="default" msgid="944264053032952679">"<xliff:g id="APP_0">%1$s</xliff:g> ले तपाईंको फोनलाई सक्रिय गरिरहने हुनाले तपाईंको फोनले सामान्य रूपमा ब्याट्रीको व्यवस्थापन गर्न सक्दैन।\n\nयो समस्या समाधान गर्ने प्रयासस्वरूप तपाईं <xliff:g id="APP_1">%1$s</xliff:g> लाई रोक्न र यसलाई पृष्ठभूमिमा चल्नबाट रोक्न सक्नुहुन्छ।"</string>
<string name="dialog_background_check_message" product="tablet" msgid="5246650726585461386">"<xliff:g id="APP_0">%1$s</xliff:g> ले तपाईंको ट्याब्लेटलाई सक्रिय गरिरहने हुनाले तपाईंको ट्याब्लेटले सामान्य रूपमा ब्याट्रीको व्यवस्थापन गर्न सक्दैन।\n\nयो समस्या समाधान गर्ने प्रयासस्वरूप, तपाईं <xliff:g id="APP_1">%1$s</xliff:g> लाई रोक्न र यसलाई पृष्ठभूमिमा चल्नबाट रोक्न सक्नुहुन्छ।"</string>
<string name="dialog_background_check_message" product="device" msgid="2746413739802588979">"<xliff:g id="APP_0">%1$s</xliff:g> ले तपाईंको यन्त्रलाई सक्रिय गरिरहने हुनाले तपाईंको यन्त्रले सामान्य रूपमा ब्याट्रीको व्यवस्थापन गर्न सक्दैन।\n\nयो समस्या समाधान गर्ने प्रयासस्वरूप तपाईं <xliff:g id="APP_1">%1$s</xliff:g> लाई रोक्न र यसलाई पृष्ठभूमिमा चल्नबाट रोक्न सक्नुहुन्छ।"</string>
@@ -2449,15 +2449,15 @@
<string name="battery_saver" msgid="3989710213758938398">"ब्याट्री सेभर"</string>
<string name="battery_saver_auto_title" msgid="4158659069641849952">"स्वतः सक्रिय गर्नुहोस्"</string>
<string name="battery_saver_auto_no_schedule" msgid="739814529432092706">"कुनै पनि समयतालिका छैन"</string>
- <string name="battery_saver_auto_routine" msgid="886514412067906980">"तपाईंको दिनचर्यामा आधारित"</string>
+ <string name="battery_saver_auto_routine" msgid="886514412067906980">"तपाईंको दिनचर्याको आधारमा"</string>
<string name="battery_saver_auto_percentage" msgid="5791982309331921556">"प्रतिशतमा आधारित"</string>
<string name="battery_saver_auto_routine_summary" msgid="9182044424547482889">"तपाईंले सामान्यतया ब्याट्री चार्ज गर्ने आगामी समयअगावै ब्याट्री सकिने सम्भावना भएमा ब्याट्री सेभर सुविधा सक्रिय हुन्छ"</string>
<string name="battery_saver_auto_percentage_summary" msgid="2036128588460338677">"<xliff:g id="PERCENT">%1$s</xliff:g> हुँदा सक्रिय हुने छ"</string>
<string name="battery_saver_schedule_settings_title" msgid="574233428557678128">"समयतालिका सेट गर्नुहोस्"</string>
<string name="battery_saver_sticky_title_new" msgid="5328707297110866082">"चार्ज पूरा भएपछि निष्क्रिय पार्नुहोस्"</string>
- <string name="battery_saver_sticky_description_new" product="default" msgid="3406582427270935879">"तपाईंको फोन <xliff:g id="PERCENT">%1$s</xliff:g> भएपछि ब्याट्री सेभर निष्क्रिय हुन्छ"</string>
- <string name="battery_saver_sticky_description_new" product="tablet" msgid="3284967694001857194">"तपाईंको ट्याब्लेटको चार्ज <xliff:g id="PERCENT">%1$s</xliff:g> भएपछि ब्याट्री सेभर निष्क्रिय हुन्छ"</string>
- <string name="battery_saver_sticky_description_new" product="device" msgid="5056520668081504111">"तपाईंको यन्त्र <xliff:g id="PERCENT">%1$s</xliff:g> भएपछि ब्याट्री सेभर निष्क्रिय हुन्छ"</string>
+ <string name="battery_saver_sticky_description_new" product="default" msgid="3406582427270935879">"तपाईंको फोन <xliff:g id="PERCENT">%1$s</xliff:g> भएपछि ब्याट्री सेभर अफ हुन्छ"</string>
+ <string name="battery_saver_sticky_description_new" product="tablet" msgid="3284967694001857194">"तपाईंको ट्याब्लेटको चार्ज <xliff:g id="PERCENT">%1$s</xliff:g> भएपछि ब्याट्री सेभर अफ हुन्छ"</string>
+ <string name="battery_saver_sticky_description_new" product="device" msgid="5056520668081504111">"तपाईंको यन्त्र <xliff:g id="PERCENT">%1$s</xliff:g> भएपछि ब्याट्री सेभर अफ हुन्छ"</string>
<!-- no translation found for battery_saver_seekbar_title (7607123201469333645) -->
<skip />
<string name="battery_saver_seekbar_title_placeholder" msgid="2321082163892561703">"सक्रिय गर्नुहोस्"</string>
@@ -2466,7 +2466,7 @@
<string name="battery_saver_turn_on_automatically_never" msgid="2623381258359775227">"कहिले पनि होइन"</string>
<string name="battery_saver_turn_on_automatically_pct" msgid="434270432432390307">"<xliff:g id="PERCENT">%1$s</xliff:g> ब्याट्री हुँदा"</string>
<string name="battery_percentage" msgid="7782252476471033843">"ब्याट्रीको प्रतिशत"</string>
- <string name="battery_percentage_description" msgid="9219875229166700610">"वस्तुस्थिति पट्टीमा ब्याट्रीको प्रतिशत देखाउनुहोस्"</string>
+ <string name="battery_percentage_description" msgid="9219875229166700610">"स्टाटस बारमा ब्याट्रीको प्रतिशत देखाउनुहोस्"</string>
<string name="process_stats_summary_title" msgid="9189588417488537954">"प्रक्रिया तथ्याङ्क"</string>
<string name="process_stats_summary" msgid="8077998499161221885">"चालु रहने प्रक्रियाहरूको बारेको geeky तथ्याङ्क"</string>
<string name="app_memory_use" msgid="5126237308545653706">"मेमोरी प्रयोग"</string>
@@ -2566,7 +2566,7 @@
<string name="fullbackup_data_summary" msgid="406274198094268556">"यन्त्र डेटा (जस्तै Wi-Fi पासवर्डहरू र कल इतिहास) र एप डेटा (जस्तै एपहरूद्वारा भण्डारित सेटिङहरू र फाइलहरू) टाढाबाट स्वचालित रुपमा ब्याकअप गर्नुहोस्। \n\nजब तपाईं स्वचालित ब्याकअप यन्त्र सक्षम गर्नुहुन्छ, यन्त्र र एप डेटा आवधिक रूपमा टाढाबाट सुरक्षित गरिएको छ। सम्पर्क, सन्देशहरू, र तस्बिरहरू जस्तै सम्भावित संवेदनशील डेटा सहित, एप डेटा कुनै पनि डेटा हुनसक्छ जुन एपले (विकासकर्ता सेटिङहरूमा आधारित) सुरक्षित गरेको छ।"</string>
<string name="device_admin_settings_title" msgid="2074319456047334589">"यन्त्रका प्रशासक सम्बन्धी सेटिङहरू"</string>
<string name="active_device_admin_msg" msgid="6929247869516924549">"यन्त्रको प्रशासन सम्बन्धी एप"</string>
- <string name="remove_device_admin" msgid="4413438593788336400">"यो यन्त्रको प्रशासकीय अनुप्रयोगलाई निष्क्रिय पार्नुहोस्"</string>
+ <string name="remove_device_admin" msgid="4413438593788336400">"यो यन्त्रको प्रशासकीय एपलाई निष्क्रिय पार्नुहोस्"</string>
<string name="uninstall_device_admin" msgid="9017499299961719830">"अनुप्रयोगको स्थापना रद्द गर्नुहोस्"</string>
<string name="remove_and_uninstall_device_admin" msgid="5607703579731496253">"निष्क्रिय पार्नुहोस् तथा स्थापना रद्द गर्नुहोस्"</string>
<string name="select_device_admin_msg" msgid="4173769638399075387">"यन्त्रका प्रशासकीय एपहरू"</string>
@@ -2576,8 +2576,8 @@
<string name="sms_access_restriction_enabled" msgid="3006320256764718303">"Restrict SMS तथा कलका लगहरूमाथिका पहुँचमा प्रतिबन्ध लगाउनुहोस्"</string>
<string name="sms_access_restriction_enabled_summary" msgid="9011946580977780063">"पूर्वनिर्धारित फोन र सन्देश अनुप्रयोगहरूसँग मात्र SMS र कल लग अनुमति हुन्छ"</string>
<string name="no_trust_agents" msgid="5757792915019113084">"विश्वस्त प्रतिनिधि उपलब्ध छैन"</string>
- <string name="add_device_admin_msg" msgid="3573765823476931173">"यन्त्रको प्रशासन सम्बन्धी अनुप्रयोगलाई सक्रिय गर्ने हो?"</string>
- <string name="add_device_admin" msgid="1621152410207260584">"यन्त्रको प्रशासन सम्बन्धी यो अनुप्रयोगलाई सक्रिय गर्नुहोस्"</string>
+ <string name="add_device_admin_msg" msgid="3573765823476931173">"यन्त्रको प्रशासन सम्बन्धी एपलाई सक्रिय गर्ने हो?"</string>
+ <string name="add_device_admin" msgid="1621152410207260584">"यन्त्रको प्रशासन सम्बन्धी यो एपलाई सक्रिय गर्नुहोस्"</string>
<string name="device_admin_add_title" msgid="6097881332139146897">"यन्त्रको प्रशासक"</string>
<string name="device_admin_warning" msgid="4421817419326480449">"यस प्रशासक एपलाई सक्रिय गर्नुले एप <xliff:g id="APP_NAME">%1$s</xliff:g> लाई निम्न कार्यहरू गर्न दिनेछ:"</string>
<string name="device_admin_status" msgid="5424944611789040723">"यो प्रशासक सक्रिय छ र एप <xliff:g id="APP_NAME">%1$s</xliff:g> लाई निम्न कार्यहरू गर्न दिन्छ:"</string>
@@ -2603,9 +2603,9 @@
<string name="work_mode_off_summary" msgid="1688885392211178315">"एप तथा सूचनाहरू निष्क्रिय छन्"</string>
<string name="remove_managed_profile_label" msgid="4625542553784793536">"कार्यालयसम्बन्धी प्रोफाइल हटाउनुहोस्"</string>
<string name="background_data" msgid="8275750862371471171">"पृष्ठभूमि डेटा"</string>
- <string name="background_data_summary" msgid="799640633948841990">"अनुप्रयोगहरूले कुनै पनि समयमा डेटा सिंक गर्न पठाउन र प्राप्त गर्न सक्दछन्"</string>
+ <string name="background_data_summary" msgid="799640633948841990">"एपहरूले कुनै पनि समयमा डेटा सिंक गर्न पठाउन र प्राप्त गर्न सक्दछन्"</string>
<string name="background_data_dialog_title" msgid="8306650658158895976">"पृष्ठभूमि डेटा असक्षम पार्ने हो?"</string>
- <string name="background_data_dialog_message" msgid="8126774244911656527">"पृष्ठभूमि डेटा असक्षम पार्नाले ब्याट्रिको जीवनकाल बढाउदछ र डेटाको प्रयोग घटाउदछ, केही अनुप्रयोगहरूले अझैं पनि पृष्ठभूमि डेटा जडान प्रयोग गर्न सक्छ।"</string>
+ <string name="background_data_dialog_message" msgid="8126774244911656527">"पृष्ठभूमि डेटा असक्षम पार्नाले ब्याट्रिको जीवनकाल बढाउदछ र डेटाको प्रयोग घटाउदछ, केही एपहरूले अझैं पनि पृष्ठभूमि डेटा जडान प्रयोग गर्न सक्छ।"</string>
<string name="sync_automatically" msgid="5746117156896468099">"अटो-सिंक एप डेटा"</string>
<string name="sync_enabled" msgid="535172627223336983">"सिंक खुला छ"</string>
<string name="sync_disabled" msgid="713721807204805062">"सिंक बन्द छ"</string>
@@ -2699,7 +2699,7 @@
<string name="data_usage_app_settings" msgid="3276444867375694809">"एप सेटिङहरू"</string>
<string name="data_usage_app_restrict_background" msgid="649167881583859169">"पृष्ठभूमि डेटा"</string>
<string name="data_usage_app_restrict_background_summary" msgid="2703967920234671881">"पृष्ठभूमिमा मोबाइल डेटाको उपयोग सक्षम गर्नुहोस्"</string>
- <string name="data_usage_app_restrict_background_summary_disabled" msgid="7211921499365814638">"यस अनुप्रयोगलाई पृष्ठभूमि डेटामा सीमित गराउन पहिले मोबाइल डेटा सीमा सेट गर्नुहोस्।"</string>
+ <string name="data_usage_app_restrict_background_summary_disabled" msgid="7211921499365814638">"यस एपलाई पृष्ठभूमि डेटामा सीमित गराउन पहिले मोबाइल डेटा सीमा सेट गर्नुहोस्।"</string>
<string name="data_usage_app_restrict_dialog_title" msgid="750037964591673167">"पृष्ठभूमि डेटा प्रतिबन्ध गर्ने हो?"</string>
<string name="data_usage_app_restrict_dialog" msgid="4022530391896478031">"यस फिचरले पृष्ठभूमि डेटामा निर्भर एपलाई मोबाइल सञ्जाल उपलब्ध हुने समयमा मात्र काम नगर्ने बनाउन सक्छ। \n \n यस एप भित्रको सेटिङमा तपाईँले थप उपयुक्त डेटाको प्रयोग नियन्त्रणहरू भेट्टाउन सक्नुहुन्छ।"</string>
<string name="data_usage_restrict_denied_dialog" msgid="18928292832775805">"तपाईंले मोबाइल डेटाको सीमा सेट गर्नुभएको बेलामा मात्र पृष्ठभूमिको डेटालाई सीमित गर्न सम्भव हुन्छ।"</string>
@@ -2729,7 +2729,7 @@
<string name="data_usage_total_during_range_mobile" product="tablet" msgid="366118962920532455">"<xliff:g id="RANGE">%2$s</xliff:g>: को बारेमा <xliff:g id="TOTAL">%1$s</xliff:g> तपाईँको ट्याब्लेटले नापे जस्तो रूपमा प्रयोग भयो। तपाईँको ढुवानीको डेटा उपयोग लेखा सायद भिन्न हुन सक्छ।"</string>
<string name="data_usage_total_during_range_mobile" product="default" msgid="3504412681869806383">"<xliff:g id="RANGE">%2$s</xliff:g>: करिब<xliff:g id="TOTAL">%1$s</xliff:g> प्रयोग भएको, तपाईँको फोनले मापन गरेअनुसार। तपाईँको डेटाको प्रयोग बाहकको खाता अनुसार फरक पर्न सक्छ।"</string>
<string name="data_usage_metered_title" msgid="6827619643999794429">"सञ्जाल प्रतिबन्धहरू"</string>
- <string name="data_usage_metered_body" msgid="1342905101297753439">"पृष्ठभूमिको डेटा सीमित गरिएको बेला सीमित नेटवर्कहरूलाई मोबाइल डेटा जस्तै मानिन्छ। ठूला फाइलहरू डाउनलोड गर्नाका लागि यी नेटवर्कहरूको प्रयोग गर्नुअघि अनुप्रयोगहरूले चेतावनी दिन सक्छन्।"</string>
+ <string name="data_usage_metered_body" msgid="1342905101297753439">"पृष्ठभूमिको डेटा सीमित गरिएको बेला सीमित नेटवर्कहरूलाई मोबाइल डेटा जस्तै मानिन्छ। ठूला फाइलहरू डाउनलोड गर्नाका लागि यी नेटवर्कहरूको प्रयोग गर्नुअघि एपहरूले चेतावनी दिन सक्छन्।"</string>
<string name="data_usage_metered_mobile" msgid="3675591449158207593">"मोबाइल नेटवर्क"</string>
<string name="data_usage_metered_wifi" msgid="2955256408132426720">"मिटर राखिएका Wi-Fi सञ्जालहरू"</string>
<string name="data_usage_metered_wifi_disabled" msgid="5771083253782103415">"मिटर राखिएका सञ्जालहरू चयन गर्न, Wi-Fi खोल्नुहोस्।"</string>
@@ -3016,9 +3016,9 @@
<string name="sim_outgoing_call_title" msgid="4683645160838507363">"बहिर्गमन कलको लागि SIM"</string>
<string name="sim_other_call_settings" msgid="5656672788293240519">"अन्य कल सेटिङहरू"</string>
<string name="preferred_network_offload_title" msgid="341815233467695133">"सञ्जाल अफलोड गर्न रुचाइयो"</string>
- <string name="preferred_network_offload_header" msgid="7101507079686660843">"सञ्जाल नाम प्रसारण असक्षम"</string>
- <string name="preferred_network_offload_footer" msgid="7454087782004987490">"आफ्नो सञ्जाल जानकारी तेस्रो दलको पहुँचबाट सञ्जाल नाम प्रसारण जोगाउने कार्य असक्षम पार्नुहोस्।"</string>
- <string name="preferred_network_offload_popup" msgid="204626698006378960">"सञ्जाल नाम प्रसारणले लुकेका सञ्जालहरू स्वचालित जडान हुनमा रोक्ने असक्षम पार्दै।"</string>
+ <string name="preferred_network_offload_header" msgid="7101507079686660843">"नेटवर्कको नाम प्रसारण असक्षम"</string>
+ <string name="preferred_network_offload_footer" msgid="7454087782004987490">"आफ्नो सञ्जाल जानकारी तेस्रो दलको पहुँचबाट नेटवर्कको नाम प्रसारण जोगाउने कार्य असक्षम पार्नुहोस्।"</string>
+ <string name="preferred_network_offload_popup" msgid="204626698006378960">"नेटवर्कको नाम प्रसारणले लुकेका सञ्जालहरू स्वचालित जडान हुनमा रोक्ने असक्षम पार्दै।"</string>
<string name="sim_signal_strength" msgid="6426261068520364170">"<xliff:g id="DBM">%1$d</xliff:g> dBm <xliff:g id="ASU">%2$d</xliff:g> asu"</string>
<string name="sim_notification_title" msgid="2457890173055955672">"SIM कार्डहरू परिवर्तन गरिए।"</string>
<string name="sim_notification_summary" msgid="6421556454979313850">"सेटअप गर्न ट्याप गर्नुहोस्"</string>
@@ -3231,7 +3231,7 @@
<string name="zen_mode_add" msgid="2533484377786927366">"थप्नुहोस्"</string>
<string name="zen_mode_enable_dialog_turn_on" msgid="6396050543542026184">"सक्रिय गर्नुहोस्"</string>
<string name="zen_mode_button_turn_on" msgid="1097964136225943415">"अहिले नै सक्रिय गर्नुहोस्"</string>
- <string name="zen_mode_button_turn_off" msgid="3990967728457149454">"अहिले नै निष्क्रिय पार्नुहोस्"</string>
+ <string name="zen_mode_button_turn_off" msgid="3990967728457149454">"अहिले नै अफ गर्नुहोस्"</string>
<string name="zen_mode_settings_dnd_manual_end_time" msgid="4307574188962071429">"<xliff:g id="FORMATTED_TIME">%s</xliff:g> सम्म बाधा नपुर्याउनुहोस् नामक मोड सक्रिय हुन्छ"</string>
<string name="zen_mode_settings_dnd_manual_indefinite" msgid="3701005376825238752">"तपाईंले निष्क्रिय नपारेसम्म बाधा नपुर्याउनुहोस् नामक मोड सक्रिय रहनेछ"</string>
<string name="zen_mode_settings_dnd_automatic_rule" msgid="2843297614114625408">"(<xliff:g id="RULE_NAME">%s</xliff:g>) नामक समयतालिकाले बाधा नपुर्याउनुहोस् नामक मोडलाई स्वतः सक्रिय गरेको थियो"</string>
@@ -3304,7 +3304,7 @@
<string name="asst_capabilities_actions_replies_title" msgid="3929395108744251338">"स्मार्ट कारबाही र जवाफहरू"</string>
<string name="asst_capabilities_actions_replies_summary" msgid="5647029698181357902">"सान्दर्भिक सूचनासम्बन्धी कार्यहरू र सूचनाका द्रुत जवाफहरू स्वतः थप्नुहोस्"</string>
<string name="hide_silent_icons_title" msgid="1070905516921542662">"मौन सूचनाको स्थितिका आइकनहरू लुकाउनुहोस्"</string>
- <string name="hide_silent_icons_summary" msgid="2624346914488256888">"वस्तुस्थिति पट्टीमा मौन सूचनाका आइकनहरू लुकाउनुहोस्"</string>
+ <string name="hide_silent_icons_summary" msgid="2624346914488256888">"स्टाटस बारमा मौन सूचनाका आइकनहरू लुकाउनुहोस्"</string>
<string name="notification_badging_title" msgid="6311699476970264712">"सूचनाको प्रतीक जनाउने थोप्लोहरूलाई अनुमति दिनुहोस्"</string>
<string name="notification_bubbles_title" msgid="9196562435741861317">"बबलहरू"</string>
<string name="notification_bubbles_summary" msgid="4624512775901949578">"तैरने सर्टकटहरूको प्रयोग गरी अनुप्रयोगका सामग्रीमाथि जुनसुकै ठाउँबाट द्रुत पहुँच राख्नुहोस्"</string>
@@ -3321,7 +3321,7 @@
<string name="notification_pulse_title" msgid="4861418327614907116">"झिम झिम गर्ने बत्ती"</string>
<string name="lock_screen_notifications_title" msgid="6889072265118747835">"लक स्क्रिनमा"</string>
<string name="locked_work_profile_notification_title" msgid="8307025804986190658">"कार्य प्रोफाइल लक हुँदा"</string>
- <string name="lock_screen_notifications_summary_show" msgid="5788874994455257378">"सबै सूचना सामग्री देखाउनुहोस्"</string>
+ <string name="lock_screen_notifications_summary_show" msgid="5788874994455257378">"सबै सूचना देखाउनुहोस्"</string>
<string name="lock_screen_notifications_summary_hide" msgid="3668806866535260143">"संवेदनशील सामग्री लुकाउनुहोस्"</string>
<string name="lock_screen_notifications_summary_disable" msgid="3259929507369817672">"कुनै सूचनाहरू नदेखाउनुहोस्"</string>
<string name="lock_screen_notifications_interstitial_message" msgid="4230189215124387818">"तपाईंको उपकरण बन्द हुँदा, तपाईं कसरी सूचनाहरू देखाउन चाहनुहुन्छ?"</string>
@@ -3350,7 +3350,7 @@
<string name="notification_silence_title" msgid="6959637402003838093">"मौन रूपमा देखाउनुहोस्"</string>
<string name="notification_alert_title" msgid="750683027055192648">"अलर्ट"</string>
<string name="allow_interruption" msgid="3548841026410702850">"अवरोधहरूहरूलाई अनुमति दिनुहोस्"</string>
- <string name="allow_interruption_summary" msgid="5207637026831135377">"अनुप्रयोगलाई बज्न, कम्पन गर्न र/वा स्क्रिनमा सूचनाहरू पप गर्न दिनुहोस्"</string>
+ <string name="allow_interruption_summary" msgid="5207637026831135377">"एपलाई बज्न, कम्पन गर्न र/वा स्क्रिनमा सूचनाहरू पप गर्न दिनुहोस्"</string>
<string name="notification_channel_summary_min" msgid="8646305539478179811">"न्यून महत्त्वको सूचना"</string>
<string name="notification_channel_summary_low" msgid="7753266237705850510">"सामान्य महत्वको सूचना"</string>
<string name="notification_channel_summary_default" msgid="7529537115678964164">"उच्च महत्त्वको सूचना"</string>
@@ -3362,30 +3362,30 @@
<string name="notifications_sent_never" msgid="237997329598144638">"कहिल्यै होइन"</string>
<string name="manage_notification_access_title" msgid="5348743662189787547">"सूचनासम्बन्धी पहुँच"</string>
<string name="work_profile_notification_access_blocked_summary" msgid="8148871282484870576">"कार्य प्रोफाइलमाथिका पहुँच सम्बन्धी सूचनाहरूलाई बन्द गरिएको छ"</string>
- <string name="manage_notification_access_summary_zero" msgid="236809421271593016">"अनुप्रयोगहरूले सूचनाहरू पढ्न सक्दैन"</string>
+ <string name="manage_notification_access_summary_zero" msgid="236809421271593016">"एपहरूले सूचनाहरू पढ्न सक्दैन"</string>
<plurals name="manage_notification_access_summary_nonzero" formatted="false" msgid="8496218948429646792">
- <item quantity="other">%d अनुप्रयोगहरूले सूचनाहरू पढ्न सक्छन्</item>
+ <item quantity="other">%d एपहरूले सूचनाहरू पढ्न सक्छन्</item>
<item quantity="one">%d अनुप्रयोगले सूचनाहरू पढ्न सक्छ</item>
</plurals>
<string name="notification_assistant_title" msgid="8216604031352764011">"सूचनासम्बन्धी सहायक सेवा"</string>
<string name="no_notification_assistant" msgid="9140123568386413264">"सहायकसम्बन्धी कुनै सेवा छैन"</string>
- <string name="no_notification_listeners" msgid="1366386609506834717">"कुनै स्थापित अनुप्रयोगहरूले सूचना पहुँच अनुरोध गरेका छैनन्।"</string>
+ <string name="no_notification_listeners" msgid="1366386609506834717">"कुनै स्थापित एपहरूले सूचना पहुँच अनुरोध गरेका छैनन्।"</string>
<string name="notification_assistant_security_warning_title" msgid="4190584438086738496">"<xliff:g id="SERVICE">%1$s</xliff:g> लाई सूचनामाथि पहुँच राख्ने अनुमति दिने हो?"</string>
- <string name="notification_assistant_security_warning_summary" msgid="6924513399671031930">"<xliff:g id="NOTIFICATION_ASSISTANT_NAME">%1$s</xliff:g> ले सम्पर्कको नाम र तपाईंले प्राप्त गर्नुभएका पाठ सन्देशहरू जस्ता व्यक्तिगत जानकारीलगायत सबै सूचनाहरू पढ्न सक्ने छ। यसले सूचनाहरू परिमार्जन गर्न वा खारेज गर्न वा तिनमा रहेका कारबाहीमूलक बटनहरू ट्रिगर गर्न पनि सक्ने छ। \n\nयसले उक्त अनुप्रयोगलाई बाधा नपुऱ्याउनुहोस् नामक मोड सक्रिय गर्ने वा निष्क्रिय पार्ने र सम्बन्धित सेटिङहरू परिवर्तन गर्ने क्षमता पनि प्रदान गर्ने छ।"</string>
+ <string name="notification_assistant_security_warning_summary" msgid="6924513399671031930">"<xliff:g id="NOTIFICATION_ASSISTANT_NAME">%1$s</xliff:g> ले सम्पर्कको नाम र तपाईंले प्राप्त गर्नुभएका पाठ सन्देशहरू जस्ता व्यक्तिगत जानकारीलगायत सबै सूचनाहरू पढ्न सक्ने छ। यसले सूचनाहरू परिमार्जन गर्न वा खारेज गर्न वा तिनमा रहेका कारबाहीमूलक बटनहरू ट्रिगर गर्न पनि सक्ने छ। \n\nयसले उक्त एपलाई बाधा नपुऱ्याउनुहोस् नामक मोड सक्रिय गर्ने वा निष्क्रिय पार्ने र सम्बन्धित सेटिङहरू परिवर्तन गर्ने क्षमता पनि प्रदान गर्ने छ।"</string>
<string name="notification_listener_security_warning_title" msgid="4902253246428777797">"<xliff:g id="SERVICE">%1$s</xliff:g> का लागि सूचना पहुँच अनुमति दिने हो?"</string>
- <string name="notification_listener_security_warning_summary" msgid="4454702907350100288">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> तपाईँले पाउनुहुने सन्देशहरूका सम्पर्कका नाम र पाठ जस्ता व्यक्तिगत जानकारी लगायत सबै सूचनाहरूलाई पढ्न सक्षम हुनेछ। यसले सूचनाहरूलाई खारेज गर्न वा तिनीहरूमा रहेका कारबाही सम्बन्धी बटनहरूलाई ट्रिगर गर्न पनि सक्नेछ। \n\nयसले अनुप्रयोगलाई बाधा नपुर्याउनुहोस् मोडलाई सक्रिय वा निष्क्रिय पार्ने र सम्बन्धित सेटिङहरूलाई परिवर्तन गर्ने क्षमता पनि दिनेछ।"</string>
+ <string name="notification_listener_security_warning_summary" msgid="4454702907350100288">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> तपाईँले पाउनुहुने सन्देशहरूका सम्पर्कका नाम र पाठ जस्ता व्यक्तिगत जानकारी लगायत सबै सूचनाहरूलाई पढ्न सक्षम हुनेछ। यसले सूचनाहरूलाई खारेज गर्न वा तिनीहरूमा रहेका कारबाही सम्बन्धी बटनहरूलाई ट्रिगर गर्न पनि सक्नेछ। \n\nयसले एपलाई बाधा नपुर्याउनुहोस् मोडलाई सक्रिय वा निष्क्रिय पार्ने र सम्बन्धित सेटिङहरूलाई परिवर्तन गर्ने क्षमता पनि दिनेछ।"</string>
<string name="notification_listener_disable_warning_summary" msgid="162165151519082978">"यदि तपाईं <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> का लागि सूचना सम्बन्धी पहुँचलाई निष्क्रिय पार्नुहुन्छ भने बाधा नपुर्याउनुहोस् सम्बन्धी पहुँच पनि निष्क्रिय हुन सक्छ।"</string>
<string name="notification_listener_disable_warning_confirm" msgid="7863495391671154188">"निष्क्रिय पार्नुहोस्"</string>
<string name="notification_listener_disable_warning_cancel" msgid="6264631825225298458">"रद्द गर्नुहोस्"</string>
<string name="vr_listeners_title" msgid="511483902408792832">"VR का सहायक सेवाहरू"</string>
- <string name="no_vr_listeners" msgid="7675484190394450979">"कुनै पनि स्थापित अनुप्रयोगहरूले VR का सहायक सेवाहरूको रूपमा चल्नका लागि अनुरोध गरेका छैनन्।"</string>
+ <string name="no_vr_listeners" msgid="7675484190394450979">"कुनै पनि स्थापित एपहरूले VR का सहायक सेवाहरूको रूपमा चल्नका लागि अनुरोध गरेका छैनन्।"</string>
<string name="vr_listener_security_warning_title" msgid="7019322246707645361">"<xliff:g id="SERVICE">%1$s</xliff:g> लाई VR को सेवामा पहुँचका लागि अनुमति दिने हो?"</string>
<string name="vr_listener_security_warning_summary" msgid="5093225583584522067">"तपाईँले अनुप्रयोगहरूलाई भर्चुअल रियालिटी मोडमा प्रयोग गरिरहेको बेला <xliff:g id="VR_LISTENER_NAME">%1$s</xliff:g> चल्नका लागि सक्षम हुनेछ।"</string>
<string name="display_vr_pref_title" msgid="1088464812293416981">"यन्त्र VR मा हुँदा"</string>
<string name="display_vr_pref_low_persistence" msgid="3132583929174794245">"अस्पष्टता कम पार्नुहोस् (सिफारिस गरिएको)"</string>
<string name="display_vr_pref_off" msgid="4681320968818852691">"स्क्रिन झिलमिलाउने प्रभाव कम गर्नुहोस्"</string>
<string name="picture_in_picture_title" msgid="4960733106166035448">"Picture-in-picture"</string>
- <string name="picture_in_picture_empty_text" msgid="8664071475324685241">"स्थापना गरिएका कुनै पनि अनुप्रयोगहरूले Picture-in-picture मोडलाई समर्थन गर्दैनन्"</string>
+ <string name="picture_in_picture_empty_text" msgid="8664071475324685241">"स्थापना गरिएका कुनै पनि एपहरूले Picture-in-picture मोडलाई समर्थन गर्दैनन्"</string>
<string name="picture_in_picture_keywords" msgid="7326958702002259262">"तस्बिरमा तस्बिर मोडमा तस्बिर"</string>
<string name="picture_in_picture_app_detail_title" msgid="3916189052657425936">"Picture-in-picture"</string>
<string name="picture_in_picture_app_detail_switch" msgid="747422998967185418">"Picture-in-picture लाई अनुमति दिनुहोस्"</string>
@@ -3682,7 +3682,7 @@
<string name="permit_usage_access" msgid="3321727608629752758">"प्रयोग पहुँचलाई अनुमति दिनुहोस्"</string>
<string name="app_usage_preference" msgid="5691545073101551727">"एप प्रयोग प्राथमिकताहरू"</string>
<string name="time_spent_in_app_pref_title" msgid="2803186835902798451">"यन्त्रमा हेरेर बिताउने समय"</string>
- <string name="usage_access_description" msgid="2178083292760305207">"प्रयोग पहुँचले अनुप्रयोगलाई तपाईंले तपाईँको वाहक, भाषा सेटिङहरू, र अन्य विवरणहरू सहित के अन्य एपहरू प्रयोग गरिरहनु भएको छ र कत्तिको गर्नुभएको छ भनेर ट्र्याक गर्न अनुमति दिन्छ।"</string>
+ <string name="usage_access_description" msgid="2178083292760305207">"प्रयोग पहुँचले एपलाई तपाईंले तपाईँको वाहक, भाषा सेटिङहरू, र अन्य विवरणहरू सहित के अन्य एपहरू प्रयोग गरिरहनु भएको छ र कत्तिको गर्नुभएको छ भनेर ट्र्याक गर्न अनुमति दिन्छ।"</string>
<string name="memory_settings_title" msgid="7867148522014070721">"मेमोरी"</string>
<string name="memory_details_title" msgid="6364825184513396865">"मेमोरीका विवरणहरू"</string>
<string name="always_running" msgid="5320183445080208766">"सधैं चलिरहेको (<xliff:g id="PERCENTAGE">%s</xliff:g>)"</string>
@@ -3699,7 +3699,7 @@
<string name="show_all_apps" msgid="5442552004569634846">"यन्त्रको पूर्ण प्रयोग देखाउनुहोस्"</string>
<string name="hide_extra_apps" msgid="6798261081113299441">"अनुप्रयोगको प्रयोग देखाउनुहोस्"</string>
<plurals name="power_high_usage_summary" formatted="false" msgid="4658343710126205199">
- <item quantity="other"><xliff:g id="NUMBER">%2$d</xliff:g> अनुप्रयोगहरूले असामान्य व्यवहार देखाउँदैछन्</item>
+ <item quantity="other"><xliff:g id="NUMBER">%2$d</xliff:g> एपहरूले असामान्य व्यवहार देखाउँदैछन्</item>
<item quantity="one"><xliff:g id="APP">%1$s</xliff:g> ले असामान्य व्यवहार देखाउँदैछ</item>
</plurals>
<plurals name="power_high_usage_title" formatted="false" msgid="63134064262760835">
@@ -3711,7 +3711,7 @@
<string name="high_power_off" msgid="5906679734326490426">"ब्याट्री प्रयोग आफू अनुकूल गर्दै"</string>
<string name="high_power_system" msgid="739584574711292753">"ब्याट्री आफू अनुकूल उपलब्ध छैन"</string>
<string name="high_power_desc" msgid="333756885680362741">"ब्याट्री आफू अनुकूल लागू नगर्नुहोस्। तपाईँको ब्याट्री निकै छिटो सिध्याउन सक्छ।"</string>
- <string name="high_power_prompt_title" msgid="2805745781720454052">"अनुप्रयोगलाई सधैँ पृष्ठभूमिमा चल्न दिने हो?"</string>
+ <string name="high_power_prompt_title" msgid="2805745781720454052">"एपलाई सधैँ पृष्ठभूमिमा चल्न दिने हो?"</string>
<string name="high_power_prompt_body" msgid="8067395096053552289">"<xliff:g id="APP_NAME">%1$s</xliff:g> लाई सधैँ पृष्ठभूमिका चल्न दिनुभयो भने ब्याट्रीको आयु घट्न सक्छ। \n\nयसलाई तपाईं पछि सेटिङ> एपहरू> सूचनाहरूबाट हटाउन सक्नुहुन्छ।"</string>
<string name="battery_summary" msgid="4345690800899981339">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> पछिल्लो पटक पूरा चार्ज भएदेखिको प्रयोग"</string>
<string name="battery_power_management" msgid="2853925857548647969">"पावर व्यवस्थापन"</string>
@@ -3759,12 +3759,12 @@
<string name="background_check_pref" msgid="664081406854758392">"पृष्ठभूमि जाँच"</string>
<string name="background_check_title" msgid="4136736684290307970">"पूर्ण पृष्ठभूमि पहुँच"</string>
<string name="assist_access_context_title" msgid="2274614501747710439">"स्क्रिनको पाठ प्रयोग गर्नुहोस्"</string>
- <string name="assist_access_context_summary" msgid="5867997494395842785">"स्क्रिन सामग्रीहरूलाई पाठको रूपमा प्रयोग गर्न सहायक अनुप्रयोगलाई अनुमति दिनुहोस्"</string>
+ <string name="assist_access_context_summary" msgid="5867997494395842785">"स्क्रिन सामग्रीहरूलाई पाठको रूपमा प्रयोग गर्न सहायक एपलाई अनुमति दिनुहोस्"</string>
<string name="assist_access_screenshot_title" msgid="1991014038776117688">"स्क्रिसट प्रयोग गर्नुहोस्"</string>
- <string name="assist_access_screenshot_summary" msgid="3010943864000489424">"स्क्रिनको एउटा सट लिन सहायक अनुप्रयोगलाई अनुमति दिनुहोस्"</string>
+ <string name="assist_access_screenshot_summary" msgid="3010943864000489424">"स्क्रिनको एउटा सट लिन सहायक एपलाई अनुमति दिनुहोस्"</string>
<string name="assist_flash_title" msgid="8852484250748551092">"स्क्रिन झिमझिम पार्नुहोस्"</string>
<string name="assist_flash_summary" msgid="6697095786317559129">"सहायक अनुप्रयोगले स्क्रिन वा स्क्रिनसटबाट पाठ प्रयोग गर्दा स्क्रिनका किनाराहरू झिमझिम पार्नुहोस्"</string>
- <string name="assist_footer" msgid="7030121180457472165">"सहायक अनुप्रयोगहरूले तपाईंले हेर्दै गर्नुभएको स्क्रिनबाट प्राप्त जानकारीमा आधारित भई तपाईंलाई मद्दत गर्न सक्छन्।केही अनुप्रयोगहरूले तपाईंलाई एकीकृत सहायता दिन दुवै लन्चर र आवाज संलग्न इनपुट सेवाहरूलाई समर्थन गर्दछन्।"</string>
+ <string name="assist_footer" msgid="7030121180457472165">"सहायक एपहरूले तपाईंले हेर्दै गर्नुभएको स्क्रिनबाट प्राप्त जानकारीमा आधारित भई तपाईंलाई मद्दत गर्न सक्छन्।केही एपहरूले तपाईंलाई एकीकृत सहायता दिन दुवै लन्चर र आवाज संलग्न इनपुट सेवाहरूलाई समर्थन गर्दछन्।"</string>
<string name="average_memory_use" msgid="5333366040118953945">"औसत मेमोरी प्रयोग"</string>
<string name="maximum_memory_use" msgid="6509872438499846077">"अधिकतम मेमोरी प्रयोग"</string>
<string name="memory_usage" msgid="7963253555330830906">"मेमोरी प्रयोग"</string>
@@ -3780,7 +3780,7 @@
<string name="free_memory" msgid="4758919141048544927">"उपलब्ध"</string>
<string name="memory_usage_apps" msgid="2839241373381152354">"अनुप्रयोगहरूद्वारा प्रयोग गरिएको मेमोरी"</string>
<plurals name="memory_usage_apps_summary" formatted="false" msgid="1235024908546944704">
- <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> अनुप्रयोगहरूले पछिल्लो <xliff:g id="DURATION_1">%2$s</xliff:g> मा मेमोरी प्रयोग गर्यो</item>
+ <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> एपहरूले पछिल्लो <xliff:g id="DURATION_1">%2$s</xliff:g> मा मेमोरी प्रयोग गर्यो</item>
<item quantity="one">१ अनुप्रयोगले पछिल्लो <xliff:g id="DURATION_0">%2$s</xliff:g> मा मेमोरी प्रयोग गर्यो</item>
</plurals>
<string name="running_frequency" msgid="7545170806968474449">"आवृत्ति"</string>
@@ -3793,7 +3793,7 @@
<string name="zen_access_revoke_warning_dialog_summary" msgid="3487422193181311403">"यस अनुप्रयोगले बनाएका सबै बाधा नपुर्याउनुहोस् नियम हटाइने छ।"</string>
<string name="ignore_optimizations_on" msgid="4373971641328943551">"आफू अनुकूल नगर्नुहोस्"</string>
<string name="ignore_optimizations_off" msgid="4372289432580282870">"अनुकुलन गर्नुहोस्"</string>
- <string name="ignore_optimizations_on_desc" msgid="2904484569799521559">"यसले तपाईंको ब्याट्रीको चार्ज चाँडै घटाउन सक्छ। अनुप्रयोगलाई अब उप्रान्त पृष्ठभूमिमा ब्याट्री प्रयोग गर्न प्रतिबन्ध लगाइने छैन।"</string>
+ <string name="ignore_optimizations_on_desc" msgid="2904484569799521559">"यसले तपाईंको ब्याट्रीको चार्ज चाँडै घटाउन सक्छ। एपलाई अब उप्रान्त पृष्ठभूमिमा ब्याट्री प्रयोग गर्न प्रतिबन्ध लगाइने छैन।"</string>
<string name="ignore_optimizations_off_desc" msgid="5598702251817814289">"अझ टिकाउयुक्त ब्याट्रीका लागि सिफारिस गरिएको"</string>
<string name="ignore_optimizations_title" msgid="7924345545276166305">"<xliff:g id="APP">%s</xliff:g> लाई ब्याट्री आफू अनुकूल बेवास्ता गर्नै अनुमति दिने हो?"</string>
<string name="app_list_preference_none" msgid="7100409177446935028">"कुनै पनि होइन"</string>
@@ -3804,7 +3804,7 @@
<string name="system_alert_window_apps_title" msgid="9188448296493699566">"एपहरू"</string>
<string name="system_alert_window_access_title" msgid="5187343732185369675">"अन्य अनुप्रयोगमा देखाउनुहोस्"</string>
<string name="permit_draw_overlay" msgid="9039092257052422344">"अन्य एपहरूमा देखिने अनुमति दिनुहोस्"</string>
- <string name="allow_overlay_description" msgid="6669524816705082807">"यो अनुप्रयोगलाई तपाईंले प्रयोग गरिरहनुभएका अन्य अनुप्रयोगहरूको माथिपट्टि देखिन अनुमति दिनुहोस्। यसले तपाईंले गर्ने ती अनुप्रयोगहरूको प्रयोगमा हस्तक्षेप गर्न वा तिनीहरू देखा पर्ने वा तिनीहरूले काम गर्ने तरिकालाई परिवर्तन गर्न सक्छ।"</string>
+ <string name="allow_overlay_description" msgid="6669524816705082807">"यो एपलाई तपाईंले प्रयोग गरिरहनुभएका अन्य अनुप्रयोगहरूको माथिपट्टि देखिन अनुमति दिनुहोस्। यसले तपाईंले गर्ने ती अनुप्रयोगहरूको प्रयोगमा हस्तक्षेप गर्न वा तिनीहरू देखा पर्ने वा तिनीहरूले काम गर्ने तरिकालाई परिवर्तन गर्न सक्छ।"</string>
<string name="keywords_vr_listener" msgid="5312633527788917750">"vr भर्चुअल रियालिटी श्रोता स्टेरियो सहायक सेवा"</string>
<string name="keywords_system_alert_window" msgid="3936658600272194599">"प्रणाली अलर्ट विन्डो संवाद माथिपट्टि देखिने अन्य एपहरू"</string>
<string name="overlay_settings" msgid="3325154759946433666">"अन्य एपहरूको माथिपट्टि देखाउनु"</string>
@@ -3815,14 +3815,14 @@
<string name="keywords_install_other_apps" msgid="5383559540695847668">"अज्ञात स्रोतहरूबाट प्राप्त हुने एपहरू स्थापना गर्नुहोस्"</string>
<string name="write_settings" msgid="9009040811145552108">"प्रणालीका सेटिङ बदल्नुहोस्"</string>
<string name="keywords_write_settings" msgid="3450405263390246293">"परिमार्जन प्रणाली सेटिङहरू लेख्नुहोस्"</string>
- <string name="write_settings_summary" msgid="4650251358459404247">"<xliff:g id="COUNT_1">%2$d</xliff:g> मा <xliff:g id="COUNT_0">%1$d</xliff:g> अनुप्रयोगलाई प्रणाली सेटिङहरू परिमार्जन गर्न अनुमति छ"</string>
+ <string name="write_settings_summary" msgid="4650251358459404247">"<xliff:g id="COUNT_1">%2$d</xliff:g> मा <xliff:g id="COUNT_0">%1$d</xliff:g> एपलाई प्रणाली सेटिङहरू परिमार्जन गर्न अनुमति छ"</string>
<string name="financial_apps_sms_access_title" msgid="3422655018008259655">"वित्तीय अनुप्रयोगको Sms माथिको पहुँच"</string>
<string name="filter_install_sources_apps" msgid="4519839764020866701">"अन्य एपहरू स्थापना गर्न सक्छ"</string>
<string name="filter_write_settings_apps" msgid="6864144615530081121">"प्रणाली सेटिङहरू परिमार्जन गर्न सक्ने"</string>
<string name="write_settings_title" msgid="5852614614193830632">"प्रणाली सेटिङहरू परिमार्जन गर्न सक्ने"</string>
<string name="write_system_settings" msgid="20450765210832463">"प्रणाली सेटिङहरू परिमार्जन गर्नुहोस्"</string>
<string name="permit_write_settings" msgid="4198491281216818756">"प्रणालीका सेटिङहरू परिमार्जन गर्न दिनुहोस्"</string>
- <string name="write_settings_description" msgid="2536706293042882500">"यस अनुमतिले अनुप्रयोगलाई प्रणाली सेटिङहरू परिमार्जन गर्न दिन्छ।"</string>
+ <string name="write_settings_description" msgid="2536706293042882500">"यस अनुमतिले एपलाई प्रणाली सेटिङहरू परिमार्जन गर्न दिन्छ।"</string>
<string name="write_settings_on" msgid="7328986337962635118">"हो"</string>
<string name="write_settings_off" msgid="5708257434958406202">"होइन"</string>
<string name="external_source_switch_title" msgid="5947220058496373178">"यो स्रोतबाट अनुमति दिनुहोस्"</string>
@@ -3847,8 +3847,8 @@
<string name="screen_zoom_conversation_timestamp_2" msgid="816265985618121370">"मंगलबार बेलुका ६.०१ बजे"</string>
<string name="screen_zoom_conversation_timestamp_3" msgid="7346540212221792932">"मंगलबार बेलुका ६.०२ बजे"</string>
<string name="screen_zoom_conversation_timestamp_4" msgid="1452374487089625022">"मंगलबार बेलुका ६.०३ बजे"</string>
- <string name="disconnected" msgid="4088439352761747084">"जडान भएको छैन"</string>
- <string name="keyboard_disconnected" msgid="3068615097201531871">"जडान भएको छैन"</string>
+ <string name="disconnected" msgid="4088439352761747084">"कनेक्ट भएको छैन"</string>
+ <string name="keyboard_disconnected" msgid="3068615097201531871">"कनेक्ट भएको छैन"</string>
<string name="data_usage_summary_format" msgid="7788095271598602797">"डेटाको <xliff:g id="AMOUNT">%1$s</xliff:g> प्रयोग गरियो"</string>
<string name="data_usage_wifi_format" msgid="9028934101966264710">"Wi‑Fi मा प्रयोग भएको <xliff:g id="AMOUNT">^1</xliff:g>"</string>
<plurals name="notification_summary" formatted="false" msgid="761061343339229103">
@@ -3871,7 +3871,7 @@
<string name="backup_disabled" msgid="6941165814784765643">"ब्याकअप असक्षम गरियो"</string>
<string name="android_version_summary" msgid="2192751442789395445">"Android <xliff:g id="VERSION">%1$s</xliff:g> मा अद्यावधिक गरियो"</string>
<string name="android_version_pending_update_summary" msgid="3554543810520655076">"अद्यावधिक उपलब्ध छ"</string>
- <string name="disabled_by_policy_title" msgid="1238318274952958846">"कार्यलाई अनुमति छैन"</string>
+ <string name="disabled_by_policy_title" msgid="1238318274952958846">"यो कार्य गर्न मिल्दैन"</string>
<string name="disabled_by_policy_title_adjust_volume" msgid="7094547090629203316">"भोल्युम परिवर्तन गर्न सकिँदैन"</string>
<string name="disabled_by_policy_title_outgoing_calls" msgid="3805836913095496278">"कल गर्न अनुमति छैन"</string>
<string name="disabled_by_policy_title_sms" msgid="1453236584236681105">"SMS लाई अनुमति छैन"</string>
@@ -3965,7 +3965,7 @@
<string name="data_usage_other_apps" msgid="7002491980141402084">"प्रयोगमा समावेश गरिएका अन्य एपहरू"</string>
<plurals name="data_saver_unrestricted_summary" formatted="false" msgid="6046013861315713697">
<item quantity="other">डेटा सेभर अन हुँदा <xliff:g id="COUNT">%1$d</xliff:g> अनुप्रयोगहरूलाई असीमित डेटाको प्रयोग गर्न अनुमति दिइयो</item>
- <item quantity="one">डेटा सेभर अन हुँदा १ अनुप्रयोगलाई असीमित डेटाको प्रयोग गर्न अनुमति दिइयो</item>
+ <item quantity="one">डेटा सेभर अन हुँदा १ एपलाई असीमित डेटाको प्रयोग गर्न अनुमति दिइयो</item>
</plurals>
<string name="data_usage_title" msgid="7874606430902201083">"प्राथमिक डेटा"</string>
<string name="data_usage_wifi_title" msgid="7161828479387766556">"Wi‑Fi डेटा"</string>
@@ -4002,10 +4002,10 @@
<string name="suggestion_additional_fingerprints" msgid="3434467207282466411">"अर्को फिंगरप्रिन्ट थप्नुहोस्"</string>
<string name="suggestion_additional_fingerprints_summary" msgid="1916547587832484196">"अर्को औँलाको प्रयोग गरी अनलक गर्नुहोस्"</string>
<string name="battery_saver_on_summary" msgid="6841062406467435672">"सक्रिय"</string>
- <string name="battery_saver_off_scheduled_summary" msgid="3740414764069188669">"<xliff:g id="BATTERY_PERCENTAGE">%1$s</xliff:g> मा सक्रिय हुने छ"</string>
+ <string name="battery_saver_off_scheduled_summary" msgid="3740414764069188669">"<xliff:g id="BATTERY_PERCENTAGE">%1$s</xliff:g> मा अन हुने छ"</string>
<string name="battery_saver_off_summary" msgid="8736555723004299721">"निष्क्रिय"</string>
<string name="battery_saver_button_turn_on" msgid="3748696527267573793">"अहिले नै सक्रिय गर्नुहोस्"</string>
- <string name="battery_saver_button_turn_off" msgid="2912950982503267828">"अहिले नै निष्क्रिय पार्नुहोस्"</string>
+ <string name="battery_saver_button_turn_off" msgid="2912950982503267828">"अहिले नै अफ गर्नुहोस्"</string>
<string name="not_battery_optimizing" msgid="2616044774307734160">"ब्याट्री आफू अनुकूल प्रयोग गरिएको छैन"</string>
<string name="lockscreen_remote_input" msgid="3363310613165354434">"यदि यन्त्रलाई लक गरिएको छ भने सूचनाहरूमा जवाफ वा अन्य पाठ टाइप गर्न रोक लगाउनुहोस्"</string>
<string name="default_spell_checker" msgid="8636661093243189533">"पूर्वनिर्धारित हिज्जे परीक्षक"</string>
@@ -4067,11 +4067,11 @@
<string name="page_tab_title_summary" msgid="4824744863994538006">"सबै"</string>
<string name="page_tab_title_support" msgid="5569262185010367870">"सुझाव तथा सहायता"</string>
<string name="developer_smallest_width" msgid="2603134476228805075">"सबैभन्दा सानो चौडाइ"</string>
- <string name="premium_sms_none" msgid="940723020871007898">"स्थापना गरिएका कुनै पनि अनुप्रयोगहरूले प्रिमियम SMS माथि पहुँचका लागि अनुरोध गरेका छैनन्"</string>
+ <string name="premium_sms_none" msgid="940723020871007898">"स्थापना गरिएका कुनै पनि एपहरूले प्रिमियम SMS माथि पहुँचका लागि अनुरोध गरेका छैनन्"</string>
<string name="premium_sms_warning" msgid="7604011651486294515">"प्रिमियम SMS सक्रिय गर्नाले तपाईंलाई पैसा लाग्न सक्छ र उक्त रकम तपाईंको वाहकलाई तिर्नु पर्ने बिलमा जोडिनेछ। यदि तपाईं अनुप्रयोगको लागि अनुमति सक्रिय गर्नुहुन्छ भने तपाईं त्यस अनुप्रयोगको प्रयोग गरेर प्रिमियम SMS पठाउन सक्नुहुनेछ।"</string>
<string name="premium_sms_access" msgid="4550027460595822851">"प्रिमियम SMS माथि पहुँच"</string>
<string name="bluetooth_disabled" msgid="6588102116819268238">"निष्क्रिय छ"</string>
- <string name="bluetooth_connected_summary" msgid="439920840053965217">"<xliff:g id="ID_1">%1$s</xliff:g> मा जडान गरियो"</string>
+ <string name="bluetooth_connected_summary" msgid="439920840053965217">"<xliff:g id="ID_1">%1$s</xliff:g> मा कनेक्ट गरियो"</string>
<string name="bluetooth_connected_multiple_devices_summary" msgid="596205630653123250">"धेरै यन्त्रहरूमा जडान गरियो"</string>
<string name="demo_mode" msgid="3831081808592541104">"प्रणालीको UI को प्रदर्शन मोड"</string>
<string name="dark_ui_mode" msgid="703844190192599217">"विषयवस्तु"</string>
@@ -4244,7 +4244,7 @@
<string name="storage_volume_total" msgid="5021484171514159913">"<xliff:g id="TOTAL">%1$s</xliff:g> मध्ये प्रयोग भएको"</string>
<string name="storage_percent_full" msgid="6924662861545958442">"प्रयोग भयो"</string>
<string name="clear_instant_app_data" msgid="3673669086522890405">"अनुप्रयोगको डेटा खाली गर्नुहोस्"</string>
- <string name="clear_instant_app_confirmation" msgid="1778553115373698061">"तपाईं यो तात्कालिक अनुप्रयोगलाई हटाउन चाहनुहुन्छ?"</string>
+ <string name="clear_instant_app_confirmation" msgid="1778553115373698061">"तपाईं यो तात्कालिक एपलाई हटाउन चाहनुहुन्छ?"</string>
<string name="launch_instant_app" msgid="5251693061228352333">"खोल्नुहोस्"</string>
<string name="game_storage_settings" msgid="6856911551799175914">"खेलहरू"</string>
<string name="audio_files_title" msgid="3073879661731363935">"अडियो फाइलहरू"</string>
@@ -4263,7 +4263,7 @@
<string name="device_theme" msgid="8992291311481135893">"यन्त्रको विषयवस्तु"</string>
<string name="default_theme" msgid="5986996377385956138">"पूर्वनिर्धारित"</string>
<string name="show_operator_name_title" msgid="5056163028128447308">"नेटवर्कको नाम"</string>
- <string name="show_operator_name_summary" msgid="6352180285743777497">"वस्तुस्थिति पट्टीमा नेटवर्कको नाम देखाउनुहोस्"</string>
+ <string name="show_operator_name_summary" msgid="6352180285743777497">"स्टाटस बारमा नेटवर्कको नाम देखाउनुहोस्"</string>
<string name="storage_manager_indicator" msgid="4255140732848476875">"भण्डारणको प्रबन्धक: <xliff:g id="STATUS">^1</xliff:g>"</string>
<string name="storage_manager_indicator_off" msgid="6404056007102580777">"निष्क्रिय"</string>
<string name="storage_manager_indicator_on" msgid="5295306384982062320">"सक्रिय"</string>
@@ -4308,8 +4308,8 @@
<string name="my_device_info_account_preference_title" msgid="7965847995028952373">"खाता"</string>
<string name="my_device_info_device_name_preference_title" msgid="7384446683248009296">"यन्त्रको नाम"</string>
<string name="change_wifi_state_title" msgid="5140754955787584174">"Wi-Fi को नियन्त्रण"</string>
- <string name="change_wifi_state_app_detail_switch" msgid="6489090744937816260">"अनुप्रयोगलाई Wi-Fi नियन्त्रण गर्ने अनुमति दिनुहोस्"</string>
- <string name="change_wifi_state_app_detail_summary" msgid="614854822469259860">"यो अनुप्रयोगलाई Wi-Fi सक्रिय गर्ने वा निष्क्रिय पार्ने अनुमति दिनुहोस्, स्क्यान गरी Wi-Fi नेटवर्कमा जडान गर्नुहोस्, नेटवर्कहरू थप्नुहोस् वा हटाउनुहोस्, वा स्थानीय रूपमा मात्र प्रयोग गर्न मिल्ने हटस्पट सुरु गर्नुहोस्"</string>
+ <string name="change_wifi_state_app_detail_switch" msgid="6489090744937816260">"एपलाई Wi-Fi नियन्त्रण गर्ने अनुमति दिनुहोस्"</string>
+ <string name="change_wifi_state_app_detail_summary" msgid="614854822469259860">"यो एपलाई Wi-Fi सक्रिय गर्ने वा निष्क्रिय पार्ने अनुमति दिनुहोस्, स्क्यान गरी Wi-Fi नेटवर्कमा जडान गर्नुहोस्, नेटवर्कहरू थप्नुहोस् वा हटाउनुहोस्, वा स्थानीय रूपमा मात्र प्रयोग गर्न मिल्ने हटस्पट सुरु गर्नुहोस्"</string>
<string name="media_output_title" msgid="8710632337456601848">"मिडिया यसमा प्ले गर्नुहोस्"</string>
<string name="media_output_default_summary" msgid="3159237976830415584">"यो यन्त्र"</string>
<string name="media_output_summary" product="default" msgid="6294261435613551178">"फोन"</string>
@@ -4332,8 +4332,8 @@
<string name="prevent_ringing_option_vibrate_summary" msgid="7961818570574683926">"सक्रिय (कम्पन)"</string>
<string name="prevent_ringing_option_mute_summary" msgid="3509459199090688328">"सक्रिय (म्युट)"</string>
<string name="prevent_ringing_option_none_summary" msgid="5152618221093037451">"निष्क्रिय"</string>
- <string name="pref_title_network_details" msgid="3971074015034595956">"नेटवर्कसम्बन्धी विवरणहरू"</string>
- <string name="about_phone_device_name_warning" msgid="9088572775969880106">"तपाईंको फोनमा रहेका अनुप्रयोगहरूले तपाईंको यन्त्रको नाम देख्न सक्छन्। तपाईंले ब्लुटुथ यन्त्रहरूमा जडान गर्दा वा कुनै Wi-Fi हटस्पट सेटअप गर्दा अरू मान्छेहरू पनि यसलाई देख्न सक्छन्।"</string>
+ <string name="pref_title_network_details" msgid="3971074015034595956">"नेटवर्कको विवरण"</string>
+ <string name="about_phone_device_name_warning" msgid="9088572775969880106">"तपाईंको फोनमा रहेका एपहरूले तपाईंको यन्त्रको नाम देख्न सक्छन्। तपाईंले ब्लुटुथ यन्त्रहरूमा जडान गर्दा वा कुनै Wi-Fi हटस्पट सेटअप गर्दा अरू मान्छेहरू पनि यसलाई देख्न सक्छन्।"</string>
<string name="devices_title" msgid="4768432575951993648">"यन्त्रहरू"</string>
<string name="homepage_all_settings" msgid="3201220879559136116">"सबै सेटिङहरू"</string>
<string name="homepage_personal_settings" msgid="7472638597249114564">"सुझावहरू"</string>
@@ -4491,7 +4491,7 @@
</plurals>
<string name="accessibility_usage_title" msgid="3920601240120963611">"पहुँचसम्बन्धी सेवाहरूको प्रयोग"</string>
<plurals name="accessibility_usage_summary" formatted="false" msgid="2604152087205501644">
- <item quantity="other"><xliff:g id="SERVICE_COUNT">%1$d</xliff:g> अनुप्रयोगहरूले तपाईंको यन्त्रमाथि पूर्ण रूपमा पहुँच राख्न सक्छन्</item>
+ <item quantity="other"><xliff:g id="SERVICE_COUNT">%1$d</xliff:g> एपहरूले तपाईंको यन्त्रमाथि पूर्ण रूपमा पहुँच राख्न सक्छन्</item>
<item quantity="one">१ अनुप्रयोगले तपाईंको यन्त्रमाथि पूर्ण रूपमा पहुँच राख्न सक्छ</item>
</plurals>
<string name="manage_app_notification" msgid="9072118910762792295">"<xliff:g id="APP_NAME">%1$s</xliff:g> सम्बन्धी सूचनाहरूको व्यवस्थापन गर्नुहोस्"</string>
diff --git a/tests/CarDeveloperOptions/res/values-nl/strings.xml b/tests/CarDeveloperOptions/res/values-nl/strings.xml
index 9144885..f096f36 100644
--- a/tests/CarDeveloperOptions/res/values-nl/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-nl/strings.xml
@@ -208,7 +208,7 @@
<string name="proxy_error_empty_host_set_port" msgid="8471455809508588255">"Het poortveld moet leeg zijn als het hostveld leeg is."</string>
<string name="proxy_error_invalid_port" msgid="4046559920586100637">"De poort die je hebt ingevoerd, is ongeldig."</string>
<string name="proxy_warning_limited_support" msgid="9026539134219095768">"De HTTP-proxy wordt gebruikt door de browser, maar mogelijk niet door de andere apps."</string>
- <string name="proxy_url_title" msgid="882042361706435904">"PAC URL: "</string>
+ <string name="proxy_url_title" msgid="882042361706435904">"PAC-URL: "</string>
<string name="radio_info_dl_kbps" msgid="2903778264453410272">"DL-bandbreedte (kbps):"</string>
<string name="radio_info_ul_kbps" msgid="3802245899811732716">"UL-bandbreedte (kbps):"</string>
<string name="radio_info_signal_location_label" msgid="6788144906873498013">"Mobiele locatiegegevens (beëindigd):"</string>
@@ -1656,7 +1656,7 @@
</plurals>
<string name="location_category_recent_location_access" msgid="286059523360285026">"Recente locatietoegang"</string>
<string name="location_recent_location_access_view_details" msgid="2051602261436245905">"Details weergeven"</string>
- <string name="location_no_recent_apps" msgid="77502059586413278">"Er zijn geen apps die je locatie onlangs hebben aangevraagd"</string>
+ <string name="location_no_recent_apps" msgid="77502059586413278">"Er zijn geen apps die je locatie onlangs hebben opgevraagd"</string>
<string name="location_no_recent_accesses" msgid="6289916310397279890">"Er zijn geen apps die recent toegang hebben gehad tot je locatie"</string>
<string name="location_high_battery_use" msgid="7177199869979522663">"Hoog accugebruik"</string>
<string name="location_low_battery_use" msgid="5030448574501435888">"Laag batterijgebruik"</string>
@@ -2281,7 +2281,7 @@
<string name="battery_tip_early_heads_up_summary" msgid="4231489566422395156">"Batterij is mogelijk eerder leeg dan normaal"</string>
<string name="battery_tip_early_heads_up_done_title" msgid="112550885882648429">"Batterijbesparing aan"</string>
<string name="battery_tip_early_heads_up_done_summary" msgid="8692257022962771181">"Sommige functies zijn mogelijk beperkt"</string>
- <string name="battery_tip_high_usage_title" product="default" msgid="4103005178310487352">"Telefoon heeft meer verbruikt dan normaal"</string>
+ <string name="battery_tip_high_usage_title" product="default" msgid="4103005178310487352">"Meer verbruikt dan normaal"</string>
<string name="battery_tip_high_usage_title" product="tablet" msgid="1019583260005768965">"Tablet heeft meer verbruikt dan normaal"</string>
<string name="battery_tip_high_usage_title" product="device" msgid="8304138287288309490">"Apparaat heeft meer verbruikt dan normaal"</string>
<string name="battery_tip_high_usage_summary" msgid="5514749872957528189">"Batterij is mogelijk eerder leeg dan normaal"</string>
diff --git a/tests/CarDeveloperOptions/res/values-or/strings.xml b/tests/CarDeveloperOptions/res/values-or/strings.xml
index c24c26b..a76070a 100644
--- a/tests/CarDeveloperOptions/res/values-or/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-or/strings.xml
@@ -4473,7 +4473,7 @@
<string name="privacy_dashboard_title" msgid="8764930992456607513">"ଗୋପନୀୟତା"</string>
<string name="privacy_dashboard_summary" msgid="7916431309860824945">"ଅନୁମତିଗୁଡ଼ିକ, ଆକାଉଣ୍ଟ କାର୍ଯ୍ୟକଳାପ, ବ୍ୟକ୍ତିଗତ ଡାଟା"</string>
<string name="contextual_card_dismiss_remove" msgid="1750420285615827309">"କାଢ଼ିଦିଅନ୍ତୁ"</string>
- <string name="contextual_card_dismiss_keep" msgid="3204450672928193661">"ରଖନ୍ତୁ"</string>
+ <string name="contextual_card_dismiss_keep" msgid="3204450672928193661">"Keep"</string>
<string name="contextual_card_dismiss_confirm_message" msgid="2352465079667730312">"ଏହି ମତାମତ କାଢ଼ିଦେବେ?"</string>
<string name="contextual_card_removed_message" msgid="4047307820743366876">"ସୁପାରିଶକୁ କାଢ଼ି ଦିଆଯାଇଛି"</string>
<string name="contextual_card_undo_dismissal_text" msgid="5009245286931852012">"ପୂର୍ବବତ୍ କରନ୍ତୁ"</string>
diff --git a/tests/CarDeveloperOptions/res/values-pa/strings.xml b/tests/CarDeveloperOptions/res/values-pa/strings.xml
index d21dc2e..dc9e6c9 100644
--- a/tests/CarDeveloperOptions/res/values-pa/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-pa/strings.xml
@@ -945,7 +945,7 @@
<string name="wifi_dpp_could_not_detect_valid_qr_code" msgid="27667719861826438">"QR ਕੋਡ ਪੜ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ। ਕੋਡ ਮੁੜ-ਕੇਂਦਰਿਤ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string>
<string name="wifi_dpp_failure_authentication_or_configuration" msgid="9142051662156233679">"ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਜੇ ਸਮੱਸਿਆ ਜਾਰੀ ਰਹਿੰਦੀ ਹੈ, ਤਾਂ ਡੀਵਾਈਸ ਉਤਪਾਦਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ"</string>
<string name="wifi_dpp_failure_not_compatible" msgid="4320027179973678283">"ਕੋਈ ਗੜਬੜ ਹੋਈ"</string>
- <string name="wifi_dpp_failure_timeout" msgid="5060065168142109420">"ਪੱਕਾ ਕਰੋ ਕਿ ਡੀਵਾਈਸ ਦਾ ਪਲੱਗ ਲੱਗਾ ਹੋਇਆ ਹੈ, ਚਾਰਜ ਕੀਤਾ ਹੋਇਆ ਅਤੇ ਚਾਲੂ ਹੈ"</string>
+ <string name="wifi_dpp_failure_timeout" msgid="5060065168142109420">"ਪੱਕਾ ਕਰੋ ਕਿ ਡੀਵਾਈਸ ਪਲੱਗ-ਇਨ ਕੀਤਾ ਹੋਇਆ ਹੈ, ਚਾਰਜ ਹੋ ਚੁੱਕਿਆ ਹੈ ਅਤੇ ਚਾਲੂ ਹੈ"</string>
<string name="wifi_dpp_failure_generic" msgid="7840142544736640189">"ਪੱਕਾ ਕਰੋ ਕਿ ਡੀਵਾਈਸ ਦਾ ਪਲੱਗ ਲੱਗਾ ਹੋਇਆ ਹੈ, ਚਾਰਜ ਕੀਤਾ ਹੋਇਆ ਅਤੇ ਚਾਲੂ ਹੈ। ਜੇ ਸਮੱਸਿਆ ਜਾਰੀ ਰਹਿੰਦੀ ਹੈ, ਤਾਂ ਡੀਵਾਈਸ ਉਤਪਾਦਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ"</string>
<string name="wifi_dpp_failure_not_supported" msgid="111779621766171626">"ਇਸ ਡੀਵਾਈਸ ਰਾਹੀਂ “<xliff:g id="SSID">%1$s</xliff:g>” ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਦੀ ਸਹੂਲਤ ਨਹੀਂ ਹੈ"</string>
<string name="wifi_dpp_check_connection_try_again" msgid="7144663015219170999">"ਕਨੈਕਸ਼ਨ ਦੀ ਜਾਂਚ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string>
@@ -1829,7 +1829,7 @@
<string name="app_factory_reset" msgid="8718986000278776272">"ਅੱਪਡੇਟਾਂ ਅਣਸਥਾਪਤ ਕਰੋ"</string>
<string name="auto_launch_enable_text" msgid="3372898942144027341">"ਤੁਸੀਂ ਇਸ ਐਪ ਨੂੰ ਕੁਝ ਕਾਰਵਾਈਆਂ ਲਈ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਤੌਰ \'ਤੇ ਲਾਂਚ ਕਰਨ ਦੀ ਚੋਣ ਕੀਤੀ ਹੈ।"</string>
<string name="always_allow_bind_appwidgets_text" msgid="2286211654774611037">"ਤੁਸੀਂ ਇਸ ਐਪ ਨੂੰ ਵਿਜੇਟ ਬਣਾਉਣ ਲਈ ਅਤੇ ਉਹਨਾਂ ਦੇ ਡਾਟਾ ਤੱਕ ਪਹੁੰਚ ਦੀ ਆਗਿਆ ਦੇਣ ਦੀ ਚੋਣ ਕੀਤੀ ਹੈ।"</string>
- <string name="auto_launch_disable_text" msgid="8560921288036801416">"ਕੋਈ ਡਿਫੌਲਟਸ ਸੈਟ ਨਹੀਂ ਕੀਤੇ"</string>
+ <string name="auto_launch_disable_text" msgid="8560921288036801416">"ਕੋਈ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਸੈੱਟ ਨਹੀਂ ਕੀਤੇ"</string>
<string name="clear_activities" msgid="2068014972549235347">"ਡਿਫੌਲਟਸ ਹਟਾਓ"</string>
<string name="screen_compatibility_text" msgid="1768064020294301496">"ਇਹ ਐਪ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ ਲਈ ਡਿਜਾਈਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। ਤੁਸੀਂ ਇਸਤੇ ਨਿਯੰਤਰਣ ਪਾ ਸਕਦੇ ਹੋ ਕਿ ਇਹ ਇੱਥੇ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ ਕਿਵੇਂ ਵਿਵਸਥਿਤ ਕਰੇ।"</string>
<string name="ask_compatibility" msgid="6687958195768084807">"ਜਦੋਂ ਲੌਂਚ ਕੀਤਾ ਹੋਵੇ ਤਾਂ ਪੁੱਛੋ"</string>
@@ -3630,7 +3630,7 @@
<item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ਵਾਧੂ ਅਨੁਮਤੀਆਂ</item>
</plurals>
<string name="runtime_permissions_summary_no_permissions_granted" msgid="3477934429220828771">"ਕੋਈ ਅਨੁਮਤੀਆਂ ਨਹੀਂ ਦਿੱਤੀਆਂ"</string>
- <string name="runtime_permissions_summary_no_permissions_requested" msgid="3901636077467389637">"ਕਿਸੇ ਅਨੁਮਤੀਆਂ ਦੀ ਬੇਨਤੀ ਨਹੀਂ ਕੀਤੀ"</string>
+ <string name="runtime_permissions_summary_no_permissions_requested" msgid="3901636077467389637">"ਕਿਸੇ ਇਜਾਜ਼ਤਾਂ ਦੀ ਬੇਨਤੀ ਨਹੀਂ ਕੀਤੀ ਗਈ"</string>
<string name="filter_all_apps" msgid="4042756539846043675">"ਸਾਰੀਆਂ ਐਪਾਂ"</string>
<string name="filter_enabled_apps" msgid="5888459261768538489">"ਸਥਾਪਤ ਐਪਾਂ"</string>
<string name="filter_instant_apps" msgid="8087483282854072366">"ਤਤਕਾਲ ਐਪਾਂ"</string>
diff --git a/tests/CarDeveloperOptions/res/values-pl/strings.xml b/tests/CarDeveloperOptions/res/values-pl/strings.xml
index e7d7865..4316f82 100644
--- a/tests/CarDeveloperOptions/res/values-pl/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-pl/strings.xml
@@ -2537,7 +2537,7 @@
<string name="battery_saver_turn_on_automatically_title" msgid="7316920304024245838">"Włącz automatycznie"</string>
<string name="battery_saver_turn_on_automatically_never" msgid="2623381258359775227">"Nigdy"</string>
<string name="battery_saver_turn_on_automatically_pct" msgid="434270432432390307">"przy <xliff:g id="PERCENT">%1$s</xliff:g> baterii"</string>
- <string name="battery_percentage" msgid="7782252476471033843">"Poziom naładowania baterii w procentach"</string>
+ <string name="battery_percentage" msgid="7782252476471033843">"Procent naładowania baterii"</string>
<string name="battery_percentage_description" msgid="9219875229166700610">"Pokazuj procentowy poziom naładowania baterii na pasku stanu"</string>
<string name="process_stats_summary_title" msgid="9189588417488537954">"Statystyki procesów"</string>
<string name="process_stats_summary" msgid="8077998499161221885">"Rozbudowane statystyki uruchomionych procesów"</string>
@@ -2806,7 +2806,7 @@
<string name="data_usage_metered_wifi" msgid="2955256408132426720">"Sieci Wi‑Fi z pomiarem"</string>
<string name="data_usage_metered_wifi_disabled" msgid="5771083253782103415">"Aby wybrać sieci z pomiarem, włącz Wi-Fi."</string>
<string name="data_usage_metered_auto" msgid="7924116401382629319">"Automatycznie"</string>
- <string name="data_usage_metered_yes" msgid="7333744880035386073">"Użycie danych jest mierzone"</string>
+ <string name="data_usage_metered_yes" msgid="7333744880035386073">"Pomiar użycia danych"</string>
<string name="data_usage_metered_no" msgid="1961524615778610008">"Użycie danych nie jest mierzone"</string>
<string name="data_usage_disclaimer" msgid="4683321532922590425">"Operator komórkowy może obliczać ilość przesłanych danych inaczej niż urządzenie."</string>
<string name="cryptkeeper_emergency_call" msgid="4625420047524693116">"Połączenie alarmowe"</string>
diff --git a/tests/CarDeveloperOptions/res/values-pt-rPT/strings.xml b/tests/CarDeveloperOptions/res/values-pt-rPT/strings.xml
index 714419c..536054b 100644
--- a/tests/CarDeveloperOptions/res/values-pt-rPT/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-pt-rPT/strings.xml
@@ -418,7 +418,7 @@
<string name="security_settings_face_enroll_done" msgid="5409739233373490971">"Concluído"</string>
<string name="security_settings_face_settings_use_face_category" msgid="1586532139528115416">"Utilize o rosto para"</string>
<string name="security_settings_face_settings_use_face_unlock_phone" msgid="318274519126401671">"Desbloq. dispositivo"</string>
- <string name="security_settings_face_settings_use_face_for_apps" msgid="5479369083370664351">"Início de sessão e pagamentos na aplicação"</string>
+ <string name="security_settings_face_settings_use_face_for_apps" msgid="5479369083370664351">"Início de sessão e pagamentos na app"</string>
<string name="security_settings_face_settings_require_attention" msgid="2755140150841557225">"Olhos abertos para desbloquear"</string>
<string name="security_settings_face_settings_require_attention_details" msgid="2557060433599942587">"Para utilizar a autenticação facial, os olhos têm de estar abertos."</string>
<string name="security_settings_face_settings_require_confirmation" msgid="7312024271060416438">"Solicitar sempre confirmação"</string>
@@ -493,7 +493,7 @@
<string name="fingerprint_enroll_button_add" msgid="6335782936874996629">"Adicionar outra"</string>
<string name="fingerprint_enroll_button_next" msgid="6419214079104413695">"Seguinte"</string>
<string name="security_settings_fingerprint_enroll_disclaimer" msgid="5831834311961551423">"Para além de desbloquear o telemóvel, também pode utilizar a sua impressão digital para autorizar compras e o acesso de aplicações. "<annotation id="url">"Saiba mais"</annotation></string>
- <string name="security_settings_fingerprint_enroll_disclaimer_lockscreen_disabled" msgid="7954742554236652690">" A opção de bloqueio do ecrã está desativada. Para saber mais, contacte o gestor da sua entidade. "<annotation id="admin_details">"Mais detalhes"</annotation>\n\n"Pode continuar a utilizar a impressão digital para autorizar compras e o acesso a aplicações. "<annotation id="url">"Saiba mais"</annotation></string>
+ <string name="security_settings_fingerprint_enroll_disclaimer_lockscreen_disabled" msgid="7954742554236652690">" A opção de bloqueio do ecrã está desativada. Para saber mais, contacte o gestor da sua entidade. "<annotation id="admin_details">"Mais detalhes"</annotation>\n\n"Pode continuar a utilizar a impressão digital para autorizar compras e o acesso a apps. "<annotation id="url">"Saiba mais"</annotation></string>
<string name="security_settings_fingerprint_enroll_lift_touch_again" msgid="1670703069782212223">"Levante o dedo e toque no sensor novamente"</string>
<string name="fingerprint_add_max" msgid="2939393314646115661">"Pode adicionar até <xliff:g id="COUNT">%d</xliff:g> impressões digitais"</string>
<string name="fingerprint_intro_error_max" msgid="3247720976621039437">"Adicionou o número máximo de impressões digitais"</string>
@@ -1892,7 +1892,7 @@
<string name="app_disable_notifications_dlg_title" msgid="699530661413553928">"Desativar notificações?"</string>
<string name="app_install_details_group_title" msgid="2909597319422976921">"Loja"</string>
<string name="app_install_details_title" msgid="6954953384372934881">"Detalhes da aplicação"</string>
- <string name="app_install_details_summary" msgid="6612222941121363940">"Aplicação instalada a partir da <xliff:g id="APP_STORE">%1$s</xliff:g>"</string>
+ <string name="app_install_details_summary" msgid="6612222941121363940">"App instalada a partir da <xliff:g id="APP_STORE">%1$s</xliff:g>"</string>
<string name="instant_app_details_summary" msgid="6384264315914966114">"Mais informações sobre <xliff:g id="APP_STORE">%1$s</xliff:g>"</string>
<string name="app_ops_running" msgid="6378418969742957805">"Em execução"</string>
<string name="app_ops_never_used" msgid="8305262378162525813">"(Nunca utilizado)"</string>
@@ -2555,7 +2555,7 @@
<string name="backup_data_summary" msgid="555459891017933746">"Fazer cópia de segurança de dados da aplicação, palavras-passe Wi-Fi e outras definições para os servidores da Google"</string>
<string name="backup_configure_account_title" msgid="1534734650559070294">"Cópia de segurança da conta"</string>
<string name="backup_data_management_title" msgid="6299288795610243508">"Gerir a conta de cópia de segurança"</string>
- <string name="include_app_data_title" msgid="6117211611131913293">"Incluir dados de aplicações"</string>
+ <string name="include_app_data_title" msgid="6117211611131913293">"Incluir dados de apps"</string>
<string name="auto_restore_title" msgid="8367486774010915221">"Restauro automático"</string>
<string name="auto_restore_summary" msgid="1941047568966428377">"Ao reinstalar uma aplicação, restaurar definições e dados da cópia de segurança"</string>
<string name="backup_inactive_title" msgid="5513496915638307750">"O serviço de cópia de segurança não está ativo"</string>
@@ -3088,7 +3088,7 @@
<string name="keywords_all_apps" msgid="846444448435698930">"aplicações, transferência, aplicações, sistema"</string>
<string name="keywords_app_permissions" msgid="8539841019997048500">"aplicações, autorizações, segurança"</string>
<string name="keywords_default_apps" msgid="7435952699323965532">"aplicações, predefinição"</string>
- <string name="keywords_ignore_optimizations" msgid="9127632532176249438">"ignorar otimizações, soneca, modo de espera das aplicações"</string>
+ <string name="keywords_ignore_optimizations" msgid="9127632532176249438">"ignorar otimizações, soneca, modo de espera das apps"</string>
<string name="keywords_color_mode" msgid="8893345199519181751">"vibrante, RGB, sRGB, cor, natural, padrão"</string>
<string name="keywords_color_temperature" msgid="2255253972992035046">"temperatura de cor, D65, D73, branco, amarelo, azul, quente, frio"</string>
<string name="keywords_lockscreen" msgid="4936846554280830394">"deslizar lentamente para desbloquear, palavra-passe, padrão, PIN"</string>
@@ -3369,7 +3369,7 @@
</plurals>
<string name="notification_assistant_title" msgid="8216604031352764011">"Assistente de notificações"</string>
<string name="no_notification_assistant" msgid="9140123568386413264">"Nenhum assistente"</string>
- <string name="no_notification_listeners" msgid="1366386609506834717">"Nenhuma aplicação instalada solicitou acesso a notificações"</string>
+ <string name="no_notification_listeners" msgid="1366386609506834717">"Nenhuma app instalada solicitou acesso a notificações"</string>
<string name="notification_assistant_security_warning_title" msgid="4190584438086738496">"Permitir o acesso a notificações do <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
<string name="notification_assistant_security_warning_summary" msgid="6924513399671031930">"O <xliff:g id="NOTIFICATION_ASSISTANT_NAME">%1$s</xliff:g> consegue ler todas as notificações, incluindo informações pessoais como nomes de contactos e o texto das mensagens recebidas. Também consegue modificar ou ignorar notificações, assim como acionar botões de ação que estas contenham. \n\nDeste modo, a aplicação também pode ativar ou desativar o modo Não incomodar e alterar as definições relacionadas."</string>
<string name="notification_listener_security_warning_title" msgid="4902253246428777797">"Permitir o acesso a notificações do <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
@@ -3378,21 +3378,21 @@
<string name="notification_listener_disable_warning_confirm" msgid="7863495391671154188">"Desativar"</string>
<string name="notification_listener_disable_warning_cancel" msgid="6264631825225298458">"Cancelar"</string>
<string name="vr_listeners_title" msgid="511483902408792832">"Serviços de assistente de RV"</string>
- <string name="no_vr_listeners" msgid="7675484190394450979">"Nenhuma aplicação instalada pediu para ser executada como serviço de assistente de RV."</string>
+ <string name="no_vr_listeners" msgid="7675484190394450979">"Nenhuma app instalada pediu para ser executada como serviço de assistente de RV."</string>
<string name="vr_listener_security_warning_title" msgid="7019322246707645361">"Permitir que o serviço de RV tenha acesso a <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
<string name="vr_listener_security_warning_summary" msgid="5093225583584522067">"Será possível executar o <xliff:g id="VR_LISTENER_NAME">%1$s</xliff:g> quando estiver a utilizar aplicações no modo de realidade virtual."</string>
<string name="display_vr_pref_title" msgid="1088464812293416981">"Com o dispositivo no modo RV"</string>
<string name="display_vr_pref_low_persistence" msgid="3132583929174794245">"Reduzir a desfocagem (recomendado)"</string>
<string name="display_vr_pref_off" msgid="4681320968818852691">"Reduzir a cintilação"</string>
<string name="picture_in_picture_title" msgid="4960733106166035448">"Imagem na imagem"</string>
- <string name="picture_in_picture_empty_text" msgid="8664071475324685241">"Nenhuma aplicação instalada é compatível com Imagem na imagem"</string>
+ <string name="picture_in_picture_empty_text" msgid="8664071475324685241">"Nenhuma app instalada é compatível com Imagem na imagem"</string>
<string name="picture_in_picture_keywords" msgid="7326958702002259262">"pip picture in"</string>
<string name="picture_in_picture_app_detail_title" msgid="3916189052657425936">"Imagem na imagem"</string>
<string name="picture_in_picture_app_detail_switch" msgid="747422998967185418">"Permitir imagem na imagem"</string>
<string name="picture_in_picture_app_detail_summary" msgid="918632751775525347">"Permita que esta aplicação crie uma janela de ecrã no ecrã enquanto a aplicação está aberta ou depois de sair da mesma (por exemplo, para continuar a ver um vídeo). Esta janela é apresentada sobre as outras aplicações que estiver a utilizar."</string>
<string name="manage_zen_access_title" msgid="3058206309728524196">"Acesso Não incomodar"</string>
<string name="zen_access_detail_switch" msgid="8706332327904974500">"Permitir o modo Não incomodar"</string>
- <string name="zen_access_empty_text" msgid="7667538993781607731">"Nenhuma aplicação instalada solicitou acesso Não incomodar"</string>
+ <string name="zen_access_empty_text" msgid="7667538993781607731">"Nenhuma app instalada solicitou acesso Não incomodar"</string>
<string name="loading_notification_apps" msgid="1978345231934072091">"A carregar aplicações..."</string>
<string name="app_notifications_off_desc" msgid="3904090905748895146">"A seu pedido, o Android está a bloquear a apresentação das notificações desta aplicação neste dispositivo."</string>
<string name="channel_notifications_off_desc" msgid="8005444443218306611">"A seu pedido, o Android está a bloquear a apresentação desta categoria de notificações neste dispositivo."</string>
@@ -3633,7 +3633,7 @@
<string name="runtime_permissions_summary_no_permissions_requested" msgid="3901636077467389637">"Nenhuma permissão solicitada"</string>
<string name="filter_all_apps" msgid="4042756539846043675">"Todas as aplicações"</string>
<string name="filter_enabled_apps" msgid="5888459261768538489">"Aplicações instaladas"</string>
- <string name="filter_instant_apps" msgid="8087483282854072366">"Aplicações instantâneas"</string>
+ <string name="filter_instant_apps" msgid="8087483282854072366">"Apps instantâneas"</string>
<string name="filter_personal_apps" msgid="3473268022652904457">"Pessoais"</string>
<string name="filter_work_apps" msgid="4202483998339465542">"De trabalho"</string>
<string name="filter_notif_all_apps" msgid="1862666327228804896">"Aplicações: todas"</string>
@@ -3664,7 +3664,7 @@
<string name="default_apps_title" msgid="3848048391400989931">"Predefinição"</string>
<string name="default_for_work" msgid="7290411716804495366">"Predefinição para o trabalho"</string>
<string name="assist_and_voice_input_title" msgid="324148194703846130">"Assistência e entrada por voz"</string>
- <string name="default_assist_title" msgid="2060846994203235317">"Aplicação de assistência"</string>
+ <string name="default_assist_title" msgid="2060846994203235317">"App de assistência"</string>
<string name="assistant_security_warning_title" msgid="8014460924169723059">"Pretende tornar <xliff:g id="ASSISTANT_APP_NAME">%s</xliff:g> o seu assistente?"</string>
<string name="assistant_security_warning" msgid="1304057692847069938">"O assistente pode ler informações sobre aplicações utilizadas no seu sistema, incluindo informações visíveis no ecrã ou acessíveis nas aplicações."</string>
<string name="assistant_security_warning_agree" msgid="5105692801460137289">"Aceitar"</string>
@@ -3759,9 +3759,9 @@
<string name="background_check_pref" msgid="664081406854758392">"Verificação em segundo plano"</string>
<string name="background_check_title" msgid="4136736684290307970">"Acesso completo em segundo plano"</string>
<string name="assist_access_context_title" msgid="2274614501747710439">"Utilizar o texto do ecrã"</string>
- <string name="assist_access_context_summary" msgid="5867997494395842785">"Permitir que a aplicação de assistência aceda ao conteúdo do ecrã como texto"</string>
+ <string name="assist_access_context_summary" msgid="5867997494395842785">"Permitir que a app de assistência aceda ao conteúdo do ecrã como texto"</string>
<string name="assist_access_screenshot_title" msgid="1991014038776117688">"Utilizar captura de ecrã"</string>
- <string name="assist_access_screenshot_summary" msgid="3010943864000489424">"Permitir que a aplicação de assistência aceda a uma imagem do ecrã"</string>
+ <string name="assist_access_screenshot_summary" msgid="3010943864000489424">"Permitir que a app de assistência aceda a uma imagem do ecrã"</string>
<string name="assist_flash_title" msgid="8852484250748551092">"Fazer piscar o ecrã"</string>
<string name="assist_flash_summary" msgid="6697095786317559129">"Fazer piscar os limites do ecrã quando a app de assistência acede a texto do ecrã ou de capturas de ecrã"</string>
<string name="assist_footer" msgid="7030121180457472165">"As apps de assistência podem ajudá-lo com base em informações do ecrã que está a ver. Algumas apps são compatíveis com serviços de iniciação e de entrada de texto por voz para oferecer assistência integrada."</string>
@@ -3797,7 +3797,7 @@
<string name="ignore_optimizations_off_desc" msgid="5598702251817814289">"Recomendado para aumentar a duração da bateria"</string>
<string name="ignore_optimizations_title" msgid="7924345545276166305">"Permitir que <xliff:g id="APP">%s</xliff:g> ignore as otimizações da bateria?"</string>
<string name="app_list_preference_none" msgid="7100409177446935028">"Nenhuma"</string>
- <string name="work_profile_usage_access_warning" msgid="403208064382097510">"Se desativar o acesso de utilização desta aplicação, não impede que o gestor monitorize a utilização de dados de aplicações no seu perfil de trabalho."</string>
+ <string name="work_profile_usage_access_warning" msgid="403208064382097510">"Se desativar o acesso de utilização desta aplicação, não impede que o gestor monitorize a utilização de dados de apps no seu perfil de trabalho."</string>
<string name="accessibility_lock_screen_progress" msgid="8242917828598820049">"<xliff:g id="COUNT_0">%1$d</xliff:g> de <xliff:g id="COUNT_1">%2$d</xliff:g> carateres utilizados"</string>
<string name="draw_overlay" msgid="2878665072530660668">"Sobrepor a outras aplicações"</string>
<string name="system_alert_window_settings" msgid="3024330223417646567">"Sobrepor a outras aplicações"</string>
@@ -4067,7 +4067,7 @@
<string name="page_tab_title_summary" msgid="4824744863994538006">"Todas"</string>
<string name="page_tab_title_support" msgid="5569262185010367870">"Sugestões e apoio técnico"</string>
<string name="developer_smallest_width" msgid="2603134476228805075">"A menor largura"</string>
- <string name="premium_sms_none" msgid="940723020871007898">"Nenhuma aplicação instalada solicitou acesso a SMS premium"</string>
+ <string name="premium_sms_none" msgid="940723020871007898">"Nenhuma app instalada solicitou acesso a SMS premium"</string>
<string name="premium_sms_warning" msgid="7604011651486294515">"O serviço de SMS premium pode custar dinheiro e, nesse caso, será adicionado às faturas do seu operador. Se ativar a autorização para uma aplicação, poderá enviar SMS premium através da mesma."</string>
<string name="premium_sms_access" msgid="4550027460595822851">"Acesso a SMS premium"</string>
<string name="bluetooth_disabled" msgid="6588102116819268238">"Desativado"</string>
@@ -4149,10 +4149,10 @@
<string name="oem_unlock_enable_disabled_summary_sim_locked_device" msgid="5223278198179877704">"Indisponível em dispositivos vinculados ao operador"</string>
<string name="oem_lock_info_message" msgid="5090850412279403901">"Reinicie o dispositivo para ativar a funcionalidade de proteção do mesmo."</string>
<string name="automatic_storage_manager_freed_bytes" msgid="7360443072390107772">"Foi disponibilizado um total de <xliff:g id="SIZE">%1$s</xliff:g>\n\nÚltima execução: <xliff:g id="DATE">%2$s</xliff:g>"</string>
- <string name="web_action_enable_title" msgid="4462106633708675959">"Aplicações instantâneas"</string>
+ <string name="web_action_enable_title" msgid="4462106633708675959">"Apps instantâneas"</string>
<string name="web_action_enable_summary" msgid="1729016644691793085">"Abrir links nas aplicações, mesmo que não estejam instaladas"</string>
- <string name="web_action_section_title" msgid="5563229447734734662">"Aplicações instantâneas"</string>
- <string name="instant_apps_settings" msgid="879003203555847537">"Preferências das Aplicações instantâneas"</string>
+ <string name="web_action_section_title" msgid="5563229447734734662">"Apps instantâneas"</string>
+ <string name="instant_apps_settings" msgid="879003203555847537">"Preferências das Apps instantâneas"</string>
<string name="domain_url_section_title" msgid="206403507921518321">"Aplicações instaladas"</string>
<string name="automatic_storage_manager_activation_warning" msgid="2630083316417707308">"O seu armazenamento está agora a ser gerido pelo gestor de armazenamento"</string>
<string name="account_for_section_header" msgid="5975241715840642563">"Contas de <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
@@ -4244,7 +4244,7 @@
<string name="storage_volume_total" msgid="5021484171514159913">"utilizados de <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
<string name="storage_percent_full" msgid="6924662861545958442">"utilizado"</string>
<string name="clear_instant_app_data" msgid="3673669086522890405">"Limpar aplicação"</string>
- <string name="clear_instant_app_confirmation" msgid="1778553115373698061">"Remover esta aplicação instantânea?"</string>
+ <string name="clear_instant_app_confirmation" msgid="1778553115373698061">"Remover esta app instantânea?"</string>
<string name="launch_instant_app" msgid="5251693061228352333">"Abrir"</string>
<string name="game_storage_settings" msgid="6856911551799175914">"Jogos"</string>
<string name="audio_files_title" msgid="3073879661731363935">"Ficheiros de áudio"</string>
@@ -4267,7 +4267,7 @@
<string name="storage_manager_indicator" msgid="4255140732848476875">"Gestor de armazenamento: <xliff:g id="STATUS">^1</xliff:g>"</string>
<string name="storage_manager_indicator_off" msgid="6404056007102580777">"Desativado"</string>
<string name="storage_manager_indicator_on" msgid="5295306384982062320">"Ativado"</string>
- <string name="install_type_instant" msgid="6248487669862821874">"Aplicação instantânea"</string>
+ <string name="install_type_instant" msgid="6248487669862821874">"App instantânea"</string>
<string name="automatic_storage_manager_deactivation_warning" msgid="7867793739491286374">"Pretende desativar o gestor de armazenamento?"</string>
<string name="storage_movies_tv" msgid="7282484273991655296">"Aplicações de filmes e TV"</string>
<string name="carrier_provisioning" msgid="3309125279191534469">"Informações de fornecimento do operador"</string>
diff --git a/tests/CarDeveloperOptions/res/values-pt/strings.xml b/tests/CarDeveloperOptions/res/values-pt/strings.xml
index de6fb5d..46da992 100644
--- a/tests/CarDeveloperOptions/res/values-pt/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-pt/strings.xml
@@ -199,7 +199,7 @@
<string name="proxy_exclusionlist_label" msgid="8179084955547941904">"Evitar proxy para"</string>
<string name="proxy_defaultView_text" msgid="5785775257042403261">"Restaurar padrões"</string>
<string name="proxy_action_text" msgid="814511434843981413">"Concluído"</string>
- <string name="proxy_hostname_label" msgid="6798891831427287847">"Hostname do proxy"</string>
+ <string name="proxy_hostname_label" msgid="6798891831427287847">"Nome do host do proxy"</string>
<string name="proxy_error" msgid="5036164133669802299">"Atenção"</string>
<string name="proxy_error_dismiss" msgid="883805570485635650">"OK"</string>
<string name="proxy_error_invalid_host" msgid="5430640241353307223">"O nome de host digitado não é válido."</string>
@@ -893,7 +893,7 @@
<string name="wifi_empty_list_user_restricted" msgid="2341613007817352431">"Você não tem permissão para alterar a rede Wi-Fi."</string>
<string name="wifi_more" msgid="3538241640407382185">"Mais"</string>
<string name="wifi_setup_wps" msgid="6730131677695521321">"Configuração automática (WPS)"</string>
- <string name="wifi_settings_scanning_required_title" msgid="3593457187659922490">"Ativar a Busca por Wi‑Fi?"</string>
+ <string name="wifi_settings_scanning_required_title" msgid="3593457187659922490">"Ativar a \"busca por Wi‑Fi\"?"</string>
<string name="wifi_settings_scanning_required_summary" msgid="7469610959462708782">"Para ativar o Wi‑Fi automaticamente, primeiro você precisa ativar a Busca por Wi‑Fi."</string>
<string name="wifi_settings_scanning_required_info" msgid="5913535073390607386">"A Busca por Wi-Fi permite que apps e serviços procurem redes Wi‑Fi a qualquer momento, mesmo quando o Wi‑Fi está desativado. Essa configuração pode ser usada, por exemplo, para melhorar recursos e serviços baseados na localização."</string>
<string name="wifi_settings_scanning_required_turn_on" msgid="4327570180594277049">"Ativar"</string>
@@ -2281,7 +2281,7 @@
<string name="battery_tip_early_heads_up_summary" msgid="4231489566422395156">"A bateria pode acabar antes do normal"</string>
<string name="battery_tip_early_heads_up_done_title" msgid="112550885882648429">"Economia de bateria ativada"</string>
<string name="battery_tip_early_heads_up_done_summary" msgid="8692257022962771181">"Alguns recursos podem ser limitados"</string>
- <string name="battery_tip_high_usage_title" product="default" msgid="4103005178310487352">"Smartphone usado além do normal"</string>
+ <string name="battery_tip_high_usage_title" product="default" msgid="4103005178310487352">"Smartphone usado mais que o normal"</string>
<string name="battery_tip_high_usage_title" product="tablet" msgid="1019583260005768965">"Tablet usado além do normal"</string>
<string name="battery_tip_high_usage_title" product="device" msgid="8304138287288309490">"Dispositivo usado além do normal"</string>
<string name="battery_tip_high_usage_summary" msgid="5514749872957528189">"A bateria pode acabar antes do esperado"</string>
@@ -4131,7 +4131,7 @@
<string name="ambient_display_pickup_summary" product="default" msgid="8798915340594367449">"Para verificar a hora, as notificações e outras informações, pegue o smartphone."</string>
<string name="ambient_display_pickup_summary" product="tablet" msgid="1077745287100012928">"Para verificar a hora, as notificações e outras informações, pegue o tablet."</string>
<string name="ambient_display_pickup_summary" product="device" msgid="404199660076598026">"Para verificar a hora, as notificações e outras informações, pegue o dispositivo."</string>
- <string name="ambient_display_tap_screen_title" product="default" msgid="2784322628239960695">"Tocar para verificar o smartphone"</string>
+ <string name="ambient_display_tap_screen_title" product="default" msgid="2784322628239960695">"Tocar na tela para verificar smartphone"</string>
<string name="ambient_display_tap_screen_title" product="tablet" msgid="6434521782016864148">"Tocar para verificar o tablet"</string>
<string name="ambient_display_tap_screen_title" product="device" msgid="4396793721852647356">"Tocar para verificar o dispositivo"</string>
<string name="ambient_display_tap_screen_summary" msgid="7869039870571925213">"Para verificar a hora, as notificações e outras informações, toque na tela."</string>
diff --git a/tests/CarDeveloperOptions/res/values-ro/strings.xml b/tests/CarDeveloperOptions/res/values-ro/strings.xml
index d2b9fb9f..0015526 100644
--- a/tests/CarDeveloperOptions/res/values-ro/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-ro/strings.xml
@@ -3686,7 +3686,7 @@
<item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> permisiune suplimentară</item>
</plurals>
<string name="runtime_permissions_summary_no_permissions_granted" msgid="3477934429220828771">"Nicio permisiune acordată"</string>
- <string name="runtime_permissions_summary_no_permissions_requested" msgid="3901636077467389637">"Nicio permisiunea solicitată"</string>
+ <string name="runtime_permissions_summary_no_permissions_requested" msgid="3901636077467389637">"Nicio permisiune solicitată"</string>
<string name="filter_all_apps" msgid="4042756539846043675">"Toate aplicațiile"</string>
<string name="filter_enabled_apps" msgid="5888459261768538489">"Aplicații instalate"</string>
<string name="filter_instant_apps" msgid="8087483282854072366">"Aplicații instantanee"</string>
diff --git a/tests/CarDeveloperOptions/res/values-ru/strings.xml b/tests/CarDeveloperOptions/res/values-ru/strings.xml
index bdabaef..60d97fb 100644
--- a/tests/CarDeveloperOptions/res/values-ru/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-ru/strings.xml
@@ -954,7 +954,7 @@
<string name="wifi_eap_domain" msgid="3298302320003640130">"Домен"</string>
<string name="wifi_eap_user_cert" msgid="6786839531765719173">"Сертификат пользователя"</string>
<string name="wifi_eap_identity" msgid="5280457017705738773">"Пользователь"</string>
- <string name="wifi_eap_anonymous" msgid="6352344972490839958">"Неизвестный"</string>
+ <string name="wifi_eap_anonymous" msgid="6352344972490839958">"Анонимный пользователь"</string>
<string name="wifi_password" msgid="6942983531275177771">"Пароль"</string>
<string name="wifi_show_password" msgid="7878398590772942202">"Показать пароль"</string>
<string name="wifi_ap_band_config" msgid="6565016368079288433">"Диапазон частот Wi-Fi"</string>
@@ -989,7 +989,7 @@
<string name="wifi_dpp_wifi_shared_with_device" msgid="5713765471758272471">"Устройство подключено к Wi‑Fi"</string>
<string name="wifi_dpp_add_another_device" msgid="3698441567235301565">"Подключить другое устройство"</string>
<string name="wifi_dpp_choose_different_network" msgid="128515107488187050">"Выбрать другую сеть Wi-Fi"</string>
- <string name="wifi_dpp_could_not_add_device" msgid="4966109556543584813">"Не удалось добавить устройство."</string>
+ <string name="wifi_dpp_could_not_add_device" msgid="4966109556543584813">"Не удалось добавить устройство"</string>
<string name="wifi_dpp_device_found" msgid="6488461467496850841">"Устройство найдено"</string>
<string name="wifi_dpp_sharing_wifi_with_this_device" msgid="2540529164687476827">"Предоставление доступа к сети Wi‑Fi…"</string>
<string name="wifi_dpp_connecting" msgid="4229290407210299897">"Подключение…"</string>
@@ -2342,7 +2342,7 @@
<string name="battery_tip_high_usage_title" product="default" msgid="4103005178310487352">"Телефон используется больше, чем обычно"</string>
<string name="battery_tip_high_usage_title" product="tablet" msgid="1019583260005768965">"Планшет используется больше, чем обычно"</string>
<string name="battery_tip_high_usage_title" product="device" msgid="8304138287288309490">"Устройство используется больше, чем обычно"</string>
- <string name="battery_tip_high_usage_summary" msgid="5514749872957528189">"Заряд батареи расходуется быстрее, чем обычно."</string>
+ <string name="battery_tip_high_usage_summary" msgid="5514749872957528189">"Заряд батареи расходуется быстрее, чем обычно"</string>
<string name="battery_tip_dialog_message" product="default" msgid="8453700079047810964">"Телефон используется больше, чем обычно. Батарея скоро разрядится.\n\nС момента последней зарядки активнее всего использовались следующие приложения с высоким потреблением энергии:"</string>
<string name="battery_tip_dialog_message" product="tablet" msgid="6489981050645444068">"Планшет используется больше, чем обычно. Батарея скоро разрядится.\n\nС момента последней зарядки активнее всего использовались следующие приложения с высоким потреблением энергии:"</string>
<string name="battery_tip_dialog_message" product="device" msgid="6348123094674390337">"Устройство используется больше, чем обычно. Батарея скоро разрядится.\n\nС момента последней зарядки активнее всего использовались следующие приложения с высоким потреблением энергии:"</string>
@@ -2525,7 +2525,7 @@
<string name="battery_saver_auto_percentage" msgid="5791982309331921556">"С учетом уровня заряда"</string>
<string name="battery_saver_auto_routine_summary" msgid="9182044424547482889">"Включать, если высока вероятность, что уровня заряда не хватит до подзарядки"</string>
<string name="battery_saver_auto_percentage_summary" msgid="2036128588460338677">"Включать при уровне заряда <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
- <string name="battery_saver_schedule_settings_title" msgid="574233428557678128">"Создать расписание"</string>
+ <string name="battery_saver_schedule_settings_title" msgid="574233428557678128">"Задать расписание"</string>
<string name="battery_saver_sticky_title_new" msgid="5328707297110866082">"Выключать при полном заряде"</string>
<string name="battery_saver_sticky_description_new" product="default" msgid="3406582427270935879">"Режим энергосбережения отключается, когда уровень заряда достигает <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
<string name="battery_saver_sticky_description_new" product="tablet" msgid="3284967694001857194">"Режим энергосбережения отключается, когда уровень заряда достигает <xliff:g id="PERCENT">%1$s</xliff:g>."</string>
@@ -3833,7 +3833,7 @@
<string name="high_power_prompt_body" msgid="8067395096053552289">"Если приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" сможет запускаться в фоновом режиме, это увеличит расход заряда батареи.\n\nЭту функцию можно отключить, открыв Настройки > Приложения и уведомления."</string>
<string name="battery_summary" msgid="4345690800899981339">"Использовано с момента последней полной зарядки: <xliff:g id="PERCENTAGE">%1$s</xliff:g>"</string>
<string name="battery_power_management" msgid="2853925857548647969">"Управление питанием"</string>
- <string name="no_battery_summary" msgid="4105932628367471314">"Батарея с момента последней полной зарядки не расходовалась"</string>
+ <string name="no_battery_summary" msgid="4105932628367471314">"С момента последней полной зарядки батарея не использовалась"</string>
<string name="app_notification_preferences" msgid="5154466638524523201">"Настройки приложения"</string>
<string name="system_ui_settings" msgid="6751165163665775447">"Показать SystemUI Tuner"</string>
<string name="additional_permissions" msgid="3142290772324571654">"Ещё разрешения"</string>
diff --git a/tests/CarDeveloperOptions/res/values-sk/arrays.xml b/tests/CarDeveloperOptions/res/values-sk/arrays.xml
index 1b6a715..2789ee1 100644
--- a/tests/CarDeveloperOptions/res/values-sk/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-sk/arrays.xml
@@ -477,7 +477,7 @@
<item msgid="1008268820118852416">"Považovať za nemeranú sieť"</item>
</string-array>
<string-array name="wifi_privacy_entries">
- <item msgid="6545683814310036454">"Používať randomizovanú adresu MAC (predvolené)"</item>
+ <item msgid="6545683814310036454">"Použiť náhodnú MAC (predvolené)"</item>
<item msgid="214234417308375326">"Používať adresu MAC zariadenia"</item>
</string-array>
<string-array name="wifi_hidden_entries">
diff --git a/tests/CarDeveloperOptions/res/values-sk/strings.xml b/tests/CarDeveloperOptions/res/values-sk/strings.xml
index 0914f34..993b52c 100644
--- a/tests/CarDeveloperOptions/res/values-sk/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-sk/strings.xml
@@ -643,7 +643,7 @@
<string name="unlock_footer_medium_complexity_requested" msgid="5004825329461874633">"<xliff:g id="APP_NAME">%1$s</xliff:g> odporúča nový kód PIN alebo heslo, bez ktorého nemusí fungovať podľa očakávaní"</string>
<string name="unlock_footer_low_complexity_requested" msgid="513212093196833566">"<xliff:g id="APP_NAME">%1$s</xliff:g> odporúča nový vzor, PIN alebo heslo, bez ktorého nemusí fungovať podľa očakávaní"</string>
<string name="unlock_footer_none_complexity_requested" msgid="1669550050597044896">"<xliff:g id="APP_NAME">%1$s</xliff:g> odporúča nová zámku obrazovky"</string>
- <string name="lock_failed_attempts_before_wipe" msgid="7565412834122130877">"Skúste to znova. Pokus <xliff:g id="CURRENT_ATTEMPTS">%1$d</xliff:g> z <xliff:g id="TOTAL_ATTEMPTS">%2$d</xliff:g>."</string>
+ <string name="lock_failed_attempts_before_wipe" msgid="7565412834122130877">"Skúste to znova. <xliff:g id="CURRENT_ATTEMPTS">%1$d</xliff:g>. z <xliff:g id="TOTAL_ATTEMPTS">%2$d</xliff:g> pokusov."</string>
<string name="lock_last_attempt_before_wipe_warning_title" msgid="7853820095898368793">"Vaše dáta budú odstránené"</string>
<string name="lock_last_pattern_attempt_before_wipe_device" msgid="1021644947949306054">"Ak pri ďalšom pokuse zadáte nesprávny vzor, dáta tohto zariadenia budú odstránené"</string>
<string name="lock_last_pin_attempt_before_wipe_device" msgid="3823600293847594141">"Ak pri ďalšom pokuse zadáte nesprávny kód PIN, dáta tohto zariadenia budú odstránené"</string>
@@ -652,7 +652,7 @@
<string name="lock_last_pin_attempt_before_wipe_user" msgid="7833852187363499906">"Ak pri ďalšom pokuse zadáte nesprávny kód PIN, tento používateľ bude odstránený"</string>
<string name="lock_last_password_attempt_before_wipe_user" msgid="8979742220140001204">"Ak pri ďalšom pokuse zadáte nesprávne heslo, tento používateľ bude odstránený"</string>
<string name="lock_last_pattern_attempt_before_wipe_profile" msgid="3877613047631174576">"Ak pri ďalšom pokuse zadáte nesprávny vzor, váš pracovný profil a jeho dáta budú odstránené"</string>
- <string name="lock_last_pin_attempt_before_wipe_profile" msgid="8132438288175428168">"Ak pri ďalšom pokuse zadáte nesprávny kód PIN, váš pracovný profil a jeho dáta budú odstránené."</string>
+ <string name="lock_last_pin_attempt_before_wipe_profile" msgid="8132438288175428168">"Ak pri ďalšom pokuse zadáte nesprávny PIN, váš pracovný profil a jeho dáta budú odstránené"</string>
<string name="lock_last_password_attempt_before_wipe_profile" msgid="1535128774464384305">"Ak pri ďalšom pokuse zadáte nesprávne heslo, váš pracovný profil a jeho dáta budú odstránené"</string>
<string name="lock_failed_attempts_now_wiping_device" msgid="8662360098784762828">"Príliš veľa chybných pokusov. Dáta tohto zariadenia budú odstránené."</string>
<string name="lock_failed_attempts_now_wiping_user" msgid="3793513796171561873">"Príliš veľa chybných pokusov. Tento používateľ bude odstránený."</string>
@@ -949,7 +949,7 @@
<string name="passpoint_label" msgid="7429247462404128615">"Uložené prostredníctvom siete"</string>
<string name="passpoint_content" msgid="340527524510304327">"Poverenia: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="wifi_eap_method" msgid="3752116941487485859">"Metóda EAP"</string>
- <string name="please_select_phase2" msgid="5848080896810435677">"Overenie – 2. fáza"</string>
+ <string name="please_select_phase2" msgid="5848080896810435677">"Druhá fáza overenia"</string>
<string name="wifi_eap_ca_cert" msgid="1496395241849383785">"Certifikát CA"</string>
<string name="wifi_eap_domain" msgid="3298302320003640130">"Doména"</string>
<string name="wifi_eap_user_cert" msgid="6786839531765719173">"Certifikát používateľa"</string>
@@ -973,7 +973,7 @@
<string name="wifi_dpp_scan_qr_code" msgid="6021600592661235546">"Skenovanie QR kódu"</string>
<string name="wifi_dpp_scan_qr_code_join_network" msgid="3085162928804379545">"Ak sa chcete pripojiť k sieti <xliff:g id="SSID">%1$s</xliff:g>, vycentrujte QR kód nižšie"</string>
<string name="wifi_dpp_scan_qr_code_join_unknown_network" msgid="5682308317067290738">"Pripojte sa k sieti Wi‑Fi naskenovaním QR kódu"</string>
- <string name="wifi_dpp_share_wifi" msgid="1724161216219646284">"Zdieľanie Wi‑Fi"</string>
+ <string name="wifi_dpp_share_wifi" msgid="1724161216219646284">"Zdieľať Wi‑Fi"</string>
<string name="wifi_dpp_scan_qr_code_with_another_device" msgid="4357387474444884759">"Ak sa chcete pripojiť k sieti <xliff:g id="SSID">%1$s</xliff:g> a zdieľať heslo, naskenujte tento QR kód"</string>
<string name="wifi_dpp_scan_open_network_qr_code_with_another_device" msgid="572011882416511818">"Ak sa chcete pripojiť k sieti <xliff:g id="SSID">%1$s</xliff:g>, naskenujte tento QR kód"</string>
<string name="wifi_dpp_could_not_detect_valid_qr_code" msgid="27667719861826438">"QR kód sa nepodarilo prečítať. Opätovne ho vycentrujte a skúste to znova."</string>
@@ -986,7 +986,7 @@
<string name="wifi_dpp_choose_network" msgid="6251424431594491691">"Výber siete"</string>
<string name="wifi_dpp_choose_network_to_connect_device" msgid="6385259857886784285">"Ak chcete pripojiť svoje zariadenie, vyberte sieť"</string>
<string name="wifi_dpp_add_device_to_wifi" msgid="6454198064645462446">"Pridať toto zariadenie do siete <xliff:g id="SSID">%1$s</xliff:g>?"</string>
- <string name="wifi_dpp_wifi_shared_with_device" msgid="5713765471758272471">"So zariadením bola zdieľaná sieť Wi‑Fi"</string>
+ <string name="wifi_dpp_wifi_shared_with_device" msgid="5713765471758272471">"Wi‑Fi sa zdieľa so zariadením"</string>
<string name="wifi_dpp_add_another_device" msgid="3698441567235301565">"Pridať ďalšie zariadenie"</string>
<string name="wifi_dpp_choose_different_network" msgid="128515107488187050">"Vybrať inú sieť"</string>
<string name="wifi_dpp_could_not_add_device" msgid="4966109556543584813">"Zariadenie sa nepodarilo pridať"</string>
@@ -1770,7 +1770,7 @@
<string name="lockpassword_confirm_your_pin_generic" msgid="8732268389177735264">"Ak chcete pokračovať, zadajte PIN zariadenia"</string>
<string name="lockpassword_confirm_your_password_generic" msgid="6304552647060899594">"Ak chcete pokračovať, zadajte heslo zariadenia"</string>
<string name="lockpassword_confirm_your_pattern_generic_profile" msgid="3074250084050465513">"Ak chcete pokračovať, použite pracovný bezpečnostný vzor"</string>
- <string name="lockpassword_confirm_your_pin_generic_profile" msgid="6037908971086439523">"Ak chcete pokračovať, zadajte pracovný kód PIN"</string>
+ <string name="lockpassword_confirm_your_pin_generic_profile" msgid="6037908971086439523">"Pre pokračovanie zadajte svoj pracovný PIN"</string>
<string name="lockpassword_confirm_your_password_generic_profile" msgid="2646162490703489685">"Ak chcete pokračovať, zadajte pracovné heslo"</string>
<string name="lockpassword_strong_auth_required_device_pattern" msgid="1014214190135045781">"Zadajte bezpečnostný vzor zariadenia a získajte vyššiu mieru zabezpečenia"</string>
<string name="lockpassword_strong_auth_required_device_pin" msgid="24030584350601016">"Zadajte kód PIN zariadenia a získajte vyššiu mieru zabezpečenia"</string>
@@ -1812,7 +1812,7 @@
<string name="lockpattern_settings_choose_lock_pattern" msgid="9042142745571386381">"Nastaviť bezpečnostný vzor"</string>
<string name="lockpattern_settings_change_lock_pattern" msgid="1456643060737114885">"Zmena bezpečnostného vzoru"</string>
<string name="lockpattern_settings_help_how_to_record" msgid="6037403647312543908">"Bezpečnostný vzor obrazovky nakreslite takto"</string>
- <string name="lockpattern_too_many_failed_confirmation_attempts" msgid="3043127997770535921">"Príliš veľa nesprávnych pokusov. Skúste to znova o <xliff:g id="NUMBER">%d</xliff:g> s."</string>
+ <string name="lockpattern_too_many_failed_confirmation_attempts" msgid="3043127997770535921">"Príliš veľa chybných pokusov. Skúste to znova o <xliff:g id="NUMBER">%d</xliff:g> s."</string>
<string name="activity_not_found" msgid="3492413375341165453">"Aplikácia nie je v telefóne nainštalovaná."</string>
<string name="lock_settings_profile_title" msgid="3928992050074556160">"Zabezpečenie pracovného profilu"</string>
<string name="lock_settings_profile_screen_lock_title" msgid="285267471459162203">"Zámka obrazovky pre pracovný profil"</string>
@@ -4000,7 +4000,7 @@
<string name="disabled_by_policy_title_camera" msgid="3741138901926111197">"Použitie fotoaparátu je zakázané"</string>
<string name="disabled_by_policy_title_screen_capture" msgid="1856835333536274665">"Snímky obrazovky sú zakázané"</string>
<string name="disabled_by_policy_title_suspend_packages" msgid="4254714213391802322">"Táto aplikácia sa nedá otvoriť"</string>
- <string name="default_admin_support_msg" msgid="5789424433689798637">"V prípade otázok kontaktujte správcu IT."</string>
+ <string name="default_admin_support_msg" msgid="5789424433689798637">"Ak máte nejaké otázky, obráťte sa na svojho správcu IT"</string>
<string name="admin_support_more_info" msgid="8737842638087863477">"Ďalšie podrobnosti"</string>
<string name="admin_profile_owner_message" msgid="3199544166281052845">"Správca môže sledovať a spravovať aplikácie a údaje priradené k vášmu pracovnému profilu vrátane nastavení, povolení, firemného prístupu, aktivity siete a informácií o polohe zariadenia."</string>
<string name="admin_profile_owner_user_message" msgid="2991249382056855531">"Správca môže sledovať a spravovať aplikácie a údaje priradené k tomuto používateľovi vrátane nastavení, povolení, firemného prístupu, aktivity siete a informácií o polohe zariadenia."</string>
diff --git a/tests/CarDeveloperOptions/res/values-sl/strings.xml b/tests/CarDeveloperOptions/res/values-sl/strings.xml
index 6f0389d..a7a4657 100644
--- a/tests/CarDeveloperOptions/res/values-sl/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-sl/strings.xml
@@ -2337,7 +2337,7 @@
<string name="battery_tip_smart_battery_summary" msgid="5344821856478265778">"Vklopite varčevanje z energijo akumulatorja"</string>
<string name="battery_tip_early_heads_up_title" msgid="707163785378746813">"Vklop varčevanja z energijo akumulatorja"</string>
<string name="battery_tip_early_heads_up_summary" msgid="4231489566422395156">"Baterija se lahko izprazni prej kot običajno"</string>
- <string name="battery_tip_early_heads_up_done_title" msgid="112550885882648429">"Varčevanje z energijo akumulatorja je vklopljeno"</string>
+ <string name="battery_tip_early_heads_up_done_title" msgid="112550885882648429">"Varčevanje z energijo baterije je vklopljeno"</string>
<string name="battery_tip_early_heads_up_done_summary" msgid="8692257022962771181">"Nekatere funkcije bodo morda omejene"</string>
<string name="battery_tip_high_usage_title" product="default" msgid="4103005178310487352">"Telefon uporabljate več kot običajno"</string>
<string name="battery_tip_high_usage_title" product="tablet" msgid="1019583260005768965">"Tablični računalnik uporabljate več kot običajno"</string>
@@ -4015,7 +4015,7 @@
<string name="condition_zen_title" msgid="2128184708916052585">"Način »ne moti« je vklopljen"</string>
<string name="condition_zen_summary_phone_muted" msgid="4396050395522974654">"Zvok telefona je izklopljen"</string>
<string name="condition_zen_summary_with_exceptions" msgid="3435216391993785818">"Z izjemami"</string>
- <string name="condition_battery_title" msgid="6704870010912986274">"Varč. z energijo akum. je vkl."</string>
+ <string name="condition_battery_title" msgid="6704870010912986274">"Varč. z energijo bat. je vkl."</string>
<string name="condition_battery_summary" msgid="1236078243905690620">"Funkcije so omejene"</string>
<string name="condition_cellular_title" msgid="6605277435894307935">"Mobilni podatki so izklopljeni"</string>
<string name="condition_cellular_summary" msgid="3607459310548343777">"Dostop do interneta je na voljo le prek omrežja Wi‑Fi"</string>
diff --git a/tests/CarDeveloperOptions/res/values-sq/strings.xml b/tests/CarDeveloperOptions/res/values-sq/strings.xml
index 80f6fc6..258a1ef 100644
--- a/tests/CarDeveloperOptions/res/values-sq/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-sq/strings.xml
@@ -2280,7 +2280,7 @@
<string name="battery_tip_early_heads_up_title" msgid="707163785378746813">"Aktivizo \"Kursyesin e baterisë\""</string>
<string name="battery_tip_early_heads_up_summary" msgid="4231489566422395156">"Bateria mund të mbarojë më herët se zakonisht"</string>
<string name="battery_tip_early_heads_up_done_title" msgid="112550885882648429">"\"Kursyesi i baterisë\" është i aktivizuar"</string>
- <string name="battery_tip_early_heads_up_done_summary" msgid="8692257022962771181">"Disa funksione mund të jenë të kufizuara"</string>
+ <string name="battery_tip_early_heads_up_done_summary" msgid="8692257022962771181">"Disa veçori mund të jenë të kufizuara"</string>
<string name="battery_tip_high_usage_title" product="default" msgid="4103005178310487352">"Telefoni është përdorur më shumë se zakonisht"</string>
<string name="battery_tip_high_usage_title" product="tablet" msgid="1019583260005768965">"Tableti është përdorur më shumë se zakonisht"</string>
<string name="battery_tip_high_usage_title" product="device" msgid="8304138287288309490">"Pajisja është përdorur më shumë se zakonisht"</string>
diff --git a/tests/CarDeveloperOptions/res/values-sr/strings.xml b/tests/CarDeveloperOptions/res/values-sr/strings.xml
index 5d493f1..12c3c5b 100644
--- a/tests/CarDeveloperOptions/res/values-sr/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-sr/strings.xml
@@ -506,7 +506,7 @@
<string name="fingerprint_delete_title" msgid="3120894112324235536">"Уклоните „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“"</string>
<string name="fingerprint_delete_message" msgid="5895802741486967970">"Желите ли да избришете овај отисак прста?"</string>
<string name="fingerprint_last_delete_message" msgid="3346252479778971442">"Нећете моћи да откључавате телефон, одобравате куповине нити да се пријављујете у апликације помоћу отисака прстију"</string>
- <string name="fingerprint_last_delete_message_profile_challenge" msgid="5385095150532247025">"Нећете моћи да откључавате профил за Work, одобравате куповине нити да се пријављујете у апликације за Work помоћу отисака прстију"</string>
+ <string name="fingerprint_last_delete_message_profile_challenge" msgid="5385095150532247025">"Нећете моћи да откључавате пословни профил, одобравате куповине нити да се пријављујете у пословне апликације помоћу отисака прстију"</string>
<string name="fingerprint_last_delete_confirm" msgid="7984595457589664004">"Да, уклони"</string>
<string name="crypt_keeper_settings_title" msgid="839783588093862748">"Шифровање"</string>
<string name="crypt_keeper_encrypt_title" product="tablet" msgid="2292129135369853167">"Шифруј таблет"</string>
@@ -548,7 +548,7 @@
<string name="suggested_fingerprint_lock_settings_summary" product="device" msgid="8114514312665251311"></string>
<string name="suggested_fingerprint_lock_settings_summary" product="default" msgid="8114514312665251311"></string>
<string name="lock_settings_picker_title" msgid="1034741644461982205">"Закључавање екрана"</string>
- <string name="lock_settings_picker_title_profile" msgid="5086594364428782115">"Изаберите закључавање за Work"</string>
+ <string name="lock_settings_picker_title_profile" msgid="5086594364428782115">"Изаберите закључавање за посао"</string>
<string name="setup_lock_settings_picker_title" product="tablet" msgid="2429667472335773519">"Заштитите таблет"</string>
<string name="setup_lock_settings_picker_title" product="device" msgid="4739290104106645233">"Заштитите уређај"</string>
<string name="setup_lock_settings_picker_title" product="default" msgid="3911582328576859628">"Заштитите телефон"</string>
@@ -563,7 +563,7 @@
<string name="unlock_set_unlock_launch_picker_title" msgid="2731152716948003853">"Закључавање екрана"</string>
<string name="unlock_set_unlock_launch_picker_summary_lock_immediately" msgid="5596186270725220642">"<xliff:g id="UNLOCK_METHOD">%1$s</xliff:g>/одмах после спавања"</string>
<string name="unlock_set_unlock_launch_picker_summary_lock_after_timeout" msgid="3861167251234952373">"<xliff:g id="UNLOCK_METHOD">%1$s</xliff:g>/<xliff:g id="TIMEOUT_STRING">%2$s</xliff:g> после спавања"</string>
- <string name="unlock_set_unlock_launch_picker_title_profile" msgid="7976345264630422921">"Закључавање профила за Work"</string>
+ <string name="unlock_set_unlock_launch_picker_title_profile" msgid="7976345264630422921">"Закључавање пословног профила"</string>
<string name="unlock_set_unlock_launch_picker_change_title" msgid="32310692507029407">"Промена закључ. екрана"</string>
<string name="unlock_set_unlock_launch_picker_change_summary" msgid="2072792784866320522">"Мењање или онемогућавање шаблона, PIN кода или безбедности лозинке"</string>
<string name="unlock_set_unlock_launch_picker_enable_summary" msgid="9070847611379078795">"Изаберите метод закључавања екрана"</string>
@@ -647,12 +647,12 @@
<string name="lock_last_pattern_attempt_before_wipe_user" msgid="5194192938934564218">"Ако у следећем покушају унесете нетачан шаблон, избрисаћемо овог корисника"</string>
<string name="lock_last_pin_attempt_before_wipe_user" msgid="7833852187363499906">"Ако у следећем покушају унесете нетачан PIN, избрисаћемо овог корисника"</string>
<string name="lock_last_password_attempt_before_wipe_user" msgid="8979742220140001204">"Ако у следећем покушају унесете нетачну лозинку, избрисаћемо овог корисника"</string>
- <string name="lock_last_pattern_attempt_before_wipe_profile" msgid="3877613047631174576">"Ако у следећем покушају унесете нетачан шаблон, избрисаћемо профил за Work и његове податке"</string>
- <string name="lock_last_pin_attempt_before_wipe_profile" msgid="8132438288175428168">"Ако у следећем покушају унесете нетачан PIN, избрисаћемо профил за Work и његове податке"</string>
- <string name="lock_last_password_attempt_before_wipe_profile" msgid="1535128774464384305">"Ако у следећем покушају унесете нетачну лозинку, избрисаћемо профил за Work и његове податке"</string>
+ <string name="lock_last_pattern_attempt_before_wipe_profile" msgid="3877613047631174576">"Ако у следећем покушају унесете нетачан шаблон, избрисаћемо пословни профил и његове податке"</string>
+ <string name="lock_last_pin_attempt_before_wipe_profile" msgid="8132438288175428168">"Ако у следећем покушају унесете нетачан PIN, избрисаћемо пословни профил и његове податке"</string>
+ <string name="lock_last_password_attempt_before_wipe_profile" msgid="1535128774464384305">"Ако у следећем покушају унесете нетачну лозинку, избрисаћемо пословни профил и његове податке"</string>
<string name="lock_failed_attempts_now_wiping_device" msgid="8662360098784762828">"Превише нетачних покушаја. Избрисаћемо податке са овог уређаја."</string>
<string name="lock_failed_attempts_now_wiping_user" msgid="3793513796171561873">"Превише нетачних покушаја. Избрисаћемо овог корисника."</string>
- <string name="lock_failed_attempts_now_wiping_profile" msgid="5347108525299038285">"Превише нетачних покушаја. Избрисаћемо овај профил за Work и његове податке."</string>
+ <string name="lock_failed_attempts_now_wiping_profile" msgid="5347108525299038285">"Превише нетачних покушаја. Избрисаћемо овај пословни профил и његове податке."</string>
<string name="lock_failed_attempts_now_wiping_dialog_dismiss" msgid="3950582268749037318">"Одбаци"</string>
<plurals name="lockpassword_password_too_short" formatted="false" msgid="694091983183310827">
<item quantity="one">Мора да садржи најмање <xliff:g id="COUNT_1">%d</xliff:g> знак</item>
@@ -962,8 +962,8 @@
<string name="wifi_dpp_could_not_detect_valid_qr_code" msgid="27667719861826438">"Читање QR кода није успело. Поново центрирајте кôд, па пробајте поново"</string>
<string name="wifi_dpp_failure_authentication_or_configuration" msgid="9142051662156233679">"Пробајте поново. Ако се проблем настави, контактирајте произвођача уређаја"</string>
<string name="wifi_dpp_failure_not_compatible" msgid="4320027179973678283">"Дошло је до грешке"</string>
- <string name="wifi_dpp_failure_timeout" msgid="5060065168142109420">"Уверите се да је уређај прикључен на извор напајања, напуњен и укључен"</string>
- <string name="wifi_dpp_failure_generic" msgid="7840142544736640189">"Уверите се да је уређај прикључен на извор напајања, напуњен и укључен. Ако се проблем настави, контактирајте произвођача уређаја"</string>
+ <string name="wifi_dpp_failure_timeout" msgid="5060065168142109420">"Уверите се да је уређај прикључен на струју, напуњен и укључен"</string>
+ <string name="wifi_dpp_failure_generic" msgid="7840142544736640189">"Уверите се да је уређај прикључен на струју, напуњен и укључен. Ако се проблем настави, контактирајте произвођача уређаја"</string>
<string name="wifi_dpp_failure_not_supported" msgid="111779621766171626">"Овај уређај не подржава додавање мреже „<xliff:g id="SSID">%1$s</xliff:g>“"</string>
<string name="wifi_dpp_check_connection_try_again" msgid="7144663015219170999">"Проверите везу и пробајте поново"</string>
<string name="wifi_dpp_choose_network" msgid="6251424431594491691">"Одаберите мрежу"</string>
@@ -980,7 +980,7 @@
<string name="wifi_dpp_lockscreen_title" msgid="3910665850075275963">"Потврдите да сте то ви"</string>
<string name="wifi_dpp_wifi_password" msgid="8007558344032612455">"Лозинка за Wi-Fi: <xliff:g id="PASSWORD">%1$s</xliff:g>"</string>
<string name="wifi_dpp_hotspot_password" msgid="6172326289042241924">"Лозинка хотспота: <xliff:g id="PASSWORD">%1$s</xliff:g>"</string>
- <string name="wifi_dpp_add_device" msgid="1347056725253936358">"Додајте уређај"</string>
+ <string name="wifi_dpp_add_device" msgid="1347056725253936358">"Додај уређај"</string>
<string name="wifi_dpp_connect_network_using_qr_code" msgid="115993715600532357">"Повежите се на ову мрежу помоћу QR кода"</string>
<string name="retry" msgid="8500839563577344702">"Пробај поново"</string>
<string name="wifi_shared" msgid="5054256778276524960">"Дели са другим корисницима уређаја"</string>
@@ -1629,17 +1629,17 @@
<string name="master_clear_progress_text" msgid="5418958116008976218">"Сачекајте..."</string>
<string name="call_settings_title" msgid="5033906789261282752">"Подешавања позива"</string>
<string name="call_settings_summary" msgid="2119161087671450035">"Подешавање гласовне поште, преусмеравања позива, стављања позива на чекање, ИД-а позиваоца"</string>
- <string name="tether_settings_title_usb" msgid="4265582654602420357">"USB Интернет повезивање"</string>
+ <string name="tether_settings_title_usb" msgid="4265582654602420357">"USB привезивање"</string>
<string name="tether_settings_title_wifi" msgid="2060965130234484613">"Преносни хотспот"</string>
<string name="tether_settings_title_bluetooth" msgid="1999590158102569959">"Bluetooth привезивање"</string>
- <string name="tether_settings_title_usb_bluetooth" msgid="1159128764162788159">"Повезивање са интернетом"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="1159128764162788159">"Привезивање"</string>
<string name="tether_settings_title_all" msgid="6935843543433954181">"Хотспот и привезивање"</string>
<string name="tether_settings_summary_hotspot_on_tether_on" msgid="1289593649526514499">"Хотспот је укључен, привезивање"</string>
<string name="tether_settings_summary_hotspot_on_tether_off" msgid="8010689354668285422">"Хотспот је укључен"</string>
<string name="tether_settings_summary_hotspot_off_tether_on" msgid="1349909238672649877">"Привезивање"</string>
<string name="tether_settings_disabled_on_data_saver" msgid="3682544845899910726">"Није могуће привезивање нити коришћење преносивих хотспотова док је Уштеда података укључена"</string>
<string name="usb_title" msgid="7480927657535578688">"USB"</string>
- <string name="usb_tethering_button_text" msgid="6242228383142012332">"USB повезивање"</string>
+ <string name="usb_tethering_button_text" msgid="6242228383142012332">"USB привезивање"</string>
<string name="usb_tethering_subtext" product="default" msgid="1573513260339548671">"Дељење интернет везе телефона преко USB-а"</string>
<string name="usb_tethering_subtext" product="tablet" msgid="154536000235361034">"Дељење интернет везе таблета преко USB-а"</string>
<string name="bluetooth_tether_checkbox_text" msgid="7257293066139372774">"Bluetooth привезивање"</string>
@@ -1749,15 +1749,15 @@
<string name="lockpassword_confirm_your_pattern_generic" msgid="6146545393074070916">"Употребите шаблон за уређај да бисте наставили"</string>
<string name="lockpassword_confirm_your_pin_generic" msgid="8732268389177735264">"Унесите PIN уређаја да бисте наставили"</string>
<string name="lockpassword_confirm_your_password_generic" msgid="6304552647060899594">"Унесите лозинку уређаја да бисте наставили"</string>
- <string name="lockpassword_confirm_your_pattern_generic_profile" msgid="3074250084050465513">"Употребите шаблон за профил за Work да бисте наставили"</string>
- <string name="lockpassword_confirm_your_pin_generic_profile" msgid="6037908971086439523">"Унесите PIN за профил за Work да бисте наставили"</string>
- <string name="lockpassword_confirm_your_password_generic_profile" msgid="2646162490703489685">"Унесите лозинку за профил за Work да бисте наставили"</string>
+ <string name="lockpassword_confirm_your_pattern_generic_profile" msgid="3074250084050465513">"Употребите шаблон за пословни профил да бисте наставили"</string>
+ <string name="lockpassword_confirm_your_pin_generic_profile" msgid="6037908971086439523">"Унесите PIN за пословни профил да бисте наставили"</string>
+ <string name="lockpassword_confirm_your_password_generic_profile" msgid="2646162490703489685">"Унесите лозинку за пословни профил да бисте наставили"</string>
<string name="lockpassword_strong_auth_required_device_pattern" msgid="1014214190135045781">"Ради веће безбедности користите шаблон за уређај"</string>
<string name="lockpassword_strong_auth_required_device_pin" msgid="24030584350601016">"Ради веће безбедности унесите PIN за уређај"</string>
<string name="lockpassword_strong_auth_required_device_password" msgid="7746588206458754598">"Ради веће безбедности унесите лозинку за уређај"</string>
- <string name="lockpassword_strong_auth_required_work_pattern" msgid="6861154706098327320">"Ради веће безбедности користите шаблон за Work"</string>
- <string name="lockpassword_strong_auth_required_work_pin" msgid="6306902249365524526">"Ради веће безбедности унесите PIN за Work"</string>
- <string name="lockpassword_strong_auth_required_work_password" msgid="2917338218971012776">"Ради веће безбедности унесите лозинку за Work"</string>
+ <string name="lockpassword_strong_auth_required_work_pattern" msgid="6861154706098327320">"Ради веће безбедности користите шаблон за посао"</string>
+ <string name="lockpassword_strong_auth_required_work_pin" msgid="6306902249365524526">"Ради веће безбедности унесите пословни PIN"</string>
+ <string name="lockpassword_strong_auth_required_work_password" msgid="2917338218971012776">"Ради веће безбедности унесите пословну лозинку"</string>
<string name="lockpassword_confirm_your_pattern_details_frp" msgid="1085862410379709928">"Телефон је ресетован на фабричка подешавања. Да бисте га користили, унесите претходни шаблон."</string>
<string name="lockpassword_confirm_your_pin_details_frp" msgid="6849889353126558761">"Телефон је ресетован на фабричка подешавања. Да бисте га користили, унесите претходни PIN."</string>
<string name="lockpassword_confirm_your_password_details_frp" msgid="3239944795659418737">"Телефон је ресетован на фабричка подешавања. Да бисте га користили, унесите претходну лозинку."</string>
@@ -1794,13 +1794,13 @@
<string name="lockpattern_settings_help_how_to_record" msgid="6037403647312543908">"Како нацртати шаблон за откључавање"</string>
<string name="lockpattern_too_many_failed_confirmation_attempts" msgid="3043127997770535921">"Превише нетачних покушаја. Пробајте поново за <xliff:g id="NUMBER">%d</xliff:g> сек."</string>
<string name="activity_not_found" msgid="3492413375341165453">"Апликација није инсталирана на телефону."</string>
- <string name="lock_settings_profile_title" msgid="3928992050074556160">"Безбедност профила за Work"</string>
- <string name="lock_settings_profile_screen_lock_title" msgid="285267471459162203">"Закључавање екрана за профил за Work"</string>
+ <string name="lock_settings_profile_title" msgid="3928992050074556160">"Безбедност пословног профила"</string>
+ <string name="lock_settings_profile_screen_lock_title" msgid="285267471459162203">"Закључавање екрана за пословни профил"</string>
<string name="lock_settings_profile_unification_title" msgid="2629698644191935287">"Користи једно закључавање"</string>
- <string name="lock_settings_profile_unification_summary" msgid="4797188229308317207">"Користите једно закључавање екрана за профил за Work и уређај"</string>
+ <string name="lock_settings_profile_unification_summary" msgid="4797188229308317207">"Користите једно закључавање екрана за пословни профил и уређај"</string>
<string name="lock_settings_profile_unification_dialog_title" msgid="1690211342491067179">"Желите ли да користите једно закључавање?"</string>
- <string name="lock_settings_profile_unification_dialog_body" msgid="8629158560032603101">"Уређај ће користити закључавање екрана за Work профил. Смернице за Work ће се примењивати на оба закључавања."</string>
- <string name="lock_settings_profile_unification_dialog_uncompliant_body" msgid="1217609779267643474">"Закључавање екрана за профил за Work није у складу са безбедносним захтевима ваше организације. Можете да користите исто закључавање екрана за уређај и профил за Work, али ће се примењивати све смернице за закључавање екрана за Work."</string>
+ <string name="lock_settings_profile_unification_dialog_body" msgid="8629158560032603101">"Уређај ће користити закључавање екрана за пословни профил. Смернице за посао ће се примењивати на оба закључавања."</string>
+ <string name="lock_settings_profile_unification_dialog_uncompliant_body" msgid="1217609779267643474">"Закључавање екрана за пословни профил није у складу са безбедносним захтевима ваше организације. Можете да користите исто закључавање екрана за уређај и пословни профил, али ће се примењивати све смернице за закључавање екрана за посао."</string>
<string name="lock_settings_profile_unification_dialog_confirm" msgid="888942752619181804">"Користи једно закључавање"</string>
<string name="lock_settings_profile_unification_dialog_uncompliant_confirm" msgid="8046452284593057185">"Користи једно закључавање"</string>
<string name="lock_settings_profile_unified_summary" msgid="5347244550751740962">"Исто као закључавање екрана уређаја"</string>
@@ -1994,7 +1994,7 @@
<string name="show_ime_summary" msgid="3246628154011464373">"Задржи је на екрану док је физичка тастатура активна"</string>
<string name="keyboard_shortcuts_helper" msgid="6574386807271399788">"Помоћ за тастерске пречице"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="8024313306403779742">"Приказ доступних пречица"</string>
- <string name="language_and_input_for_work_category_title" msgid="2053255944038892588">"Тастатуре и алатке за профил за Work"</string>
+ <string name="language_and_input_for_work_category_title" msgid="2053255944038892588">"Тастатуре и алатке за пословни профил"</string>
<string name="virtual_keyboards_for_work_title" msgid="3968291646938204523">"Виртуелна тастатура за посао"</string>
<string name="default_keyboard_layout" msgid="9171704064451242230">"Подразумевано"</string>
<string name="pointer_speed" msgid="800691982011350432">"Брзина показивача"</string>
@@ -2634,7 +2634,7 @@
<string name="sync_is_failing" msgid="8284618104132302644">"Синхронизација тренутно има проблема. Ускоро ће се вратити."</string>
<string name="add_account_label" msgid="4461298847239641874">"Додај налог"</string>
<string name="managed_profile_not_available_label" msgid="8784246681719821917">"Пословни профил још увек није доступан"</string>
- <string name="work_mode_label" msgid="6845849194740195757">"Профил за Work"</string>
+ <string name="work_mode_label" msgid="6845849194740195757">"Пословни профил"</string>
<string name="work_mode_on_summary" msgid="1682781113156323592">"Овим управља организација"</string>
<string name="work_mode_off_summary" msgid="1688885392211178315">"Апликације и обавештења су искључени"</string>
<string name="remove_managed_profile_label" msgid="4625542553784793536">"Уклони профил за посао"</string>
@@ -2877,7 +2877,7 @@
<item quantity="other"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> су инсталирала ауторитете за издавање сертификата на уређају, што може да им омогући да прате активности уређаја на мрежи, укључујући имејлове, апликације и безбедне веб-сајтове.\n\nКонтактирајте администратора да бисте добили више информација о овим сертификатима.</item>
</plurals>
<plurals name="ssl_ca_cert_info_message" formatted="false" msgid="8271858091418779584">
- <item quantity="one"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> је инсталирао ауторитете за издавање сертификата за профил за Work, што може да му омогући да прати активности на пословној мрежи, укључујући имејлове, апликације и безбедне веб-сајтове.\n\nКонтактирајте администратора да бисте добили више информација о овим сертификатима.</item>
+ <item quantity="one"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> је инсталирао ауторитете за издавање сертификата за пословни профил, што може да му омогући да прати активности на пословној мрежи, укључујући имејлове, апликације и безбедне веб-сајтове.\n\nКонтактирајте администратора да бисте добили више информација о овим сертификатима.</item>
<item quantity="few"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> су инсталирала ауторитете за издавање сертификата на уређају, што може да им омогући да прате активности уређаја на мрежи, укључујући имејлове, апликације и безбедне веб-сајтове.\n\nКонтактирајте администратора да бисте добили више информација о овим сертификатима.</item>
<item quantity="other"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> су инсталирала ауторитете за издавање сертификата на уређају, што може да им омогући да прате активности уређаја на мрежи, укључујући имејлове, апликације и безбедне веб-сајтове.\n\nКонтактирајте администратора да бисте добили више информација о овим сертификатима.</item>
</plurals>
@@ -3134,7 +3134,7 @@
<string name="keywords_color_temperature" msgid="2255253972992035046">"боја, температура, D65, D73, бела, жута, плава, топла, хладна"</string>
<string name="keywords_lockscreen" msgid="4936846554280830394">"превлачење за откључавање, лозинка, шаблон, PIN"</string>
<string name="keywords_profile_challenge" msgid="8653718001253979611">"work изазов, work, профил"</string>
- <string name="keywords_unification" msgid="2020759909366983593">"профил за Work, профил којим се управља, обједини, обједињавање, Work, профил"</string>
+ <string name="keywords_unification" msgid="2020759909366983593">"пословни профил, профил којим се управља, обједини, обједињавање, Work, профил"</string>
<string name="keywords_gesture" msgid="5031323247529869644">"покрети"</string>
<string name="keywords_payment_settings" msgid="4745023716567666052">"платите, додирните, плаћања"</string>
<string name="keywords_backup" msgid="7433356270034921627">"резервна копија, правити резервну копију"</string>
@@ -3324,16 +3324,16 @@
<string name="zen_onboarding_new_setting_summary" msgid="8264430315983860075">"Нећете видети нити чути обавештења. Позиви од контаката са звездицом и поновних позивалаца су дозвољени."</string>
<string name="zen_onboarding_current_setting_summary" msgid="3569246708507270821">"(тренутно подешавање)"</string>
<string name="zen_onboarding_dnd_visual_disturbances_header" msgid="7584229011611927613">"Желите ли да промените подешавања обавештења за режим Не узнемиравај?"</string>
- <string name="sound_work_settings" msgid="4140215240360927923">"Звуци за профил за Work"</string>
+ <string name="sound_work_settings" msgid="4140215240360927923">"Звуци за пословни профил"</string>
<string name="work_use_personal_sounds_title" msgid="531727195073003599">"Користи звуке личног профила"</string>
- <string name="work_use_personal_sounds_summary" msgid="2886871383995187441">"Звукови профила за Work су исти као и звукови за личне профиле"</string>
- <string name="work_ringtone_title" msgid="5499360583947410224">"Мелодија звона за телефон за Work"</string>
+ <string name="work_use_personal_sounds_summary" msgid="2886871383995187441">"Звукови пословног профила су исти као и звукови за личне профиле"</string>
+ <string name="work_ringtone_title" msgid="5499360583947410224">"Мелодија звона пословног телефона"</string>
<string name="work_notification_ringtone_title" msgid="8059159087214025757">"Подразумевани звук обавештења за посао"</string>
<string name="work_alarm_ringtone_title" msgid="5328487181385375130">"Подразумевани звук аларма за посао"</string>
<string name="work_sound_same_as_personal" msgid="7728560881697159758">"Исто као и за лични профил"</string>
<string name="work_sync_dialog_title" msgid="4799120971202956837">"Желите ли да замените звукове?"</string>
<string name="work_sync_dialog_yes" msgid="2110726233746476066">"Замени"</string>
- <string name="work_sync_dialog_message" msgid="944233463059129156">"Звуци са личног профила ће се користити за профил за Work"</string>
+ <string name="work_sync_dialog_message" msgid="944233463059129156">"Звуци са личног профила ће се користити за пословни профил"</string>
<string name="ringtones_install_custom_sound_title" msgid="210551218424553671">"Додати прилагођени звук?"</string>
<string name="ringtones_install_custom_sound_content" msgid="6683649115132255452">"Ова датотека ће бити копирана у директоријум <xliff:g id="FOLDER_NAME">%s</xliff:g>"</string>
<string name="ringtones_category_preference_title" msgid="4491932700769815470">"Мелодије звона"</string>
@@ -3342,7 +3342,7 @@
<string name="recent_notifications" msgid="8125865995065032049">"Недавно послато"</string>
<string name="recent_notifications_see_all_title" msgid="4089007770442871469">"Погледајте све из последњих 7 дана"</string>
<string name="advanced_section_header" msgid="984680389373090015">"Напредна"</string>
- <string name="profile_section_header" msgid="5471479005472037417">"Обавештења за Work"</string>
+ <string name="profile_section_header" msgid="5471479005472037417">"Пословна обавештења"</string>
<string name="asst_capability_prioritizer_title" msgid="3488284760645922160">"Аутоматско давање приоритета за обавештења"</string>
<string name="asst_capability_prioritizer_summary" msgid="3525640645743790796">"Аутоматски искључује звук и поставља на дно мање важна обавештења"</string>
<string name="asst_capabilities_actions_replies_title" msgid="3929395108744251338">"Паметне радње и одговори"</string>
@@ -3364,14 +3364,14 @@
<string name="swipe_direction_rtl" msgid="4521416787262888813">"Превуците улево да бисте одбацили, удесно да би се приказао мени"</string>
<string name="notification_pulse_title" msgid="4861418327614907116">"Укључи треперење лампице"</string>
<string name="lock_screen_notifications_title" msgid="6889072265118747835">"На закључаном екрану"</string>
- <string name="locked_work_profile_notification_title" msgid="8307025804986190658">"Када је профил за Work закључан"</string>
+ <string name="locked_work_profile_notification_title" msgid="8307025804986190658">"Када је пословни профил закључан"</string>
<string name="lock_screen_notifications_summary_show" msgid="5788874994455257378">"Прикажи сав садржај обавештења"</string>
<string name="lock_screen_notifications_summary_hide" msgid="3668806866535260143">"Сакриј осетљив садржај"</string>
<string name="lock_screen_notifications_summary_disable" msgid="3259929507369817672">"Не приказуј никаква обавештења"</string>
<string name="lock_screen_notifications_interstitial_message" msgid="4230189215124387818">"Када је уређај закључан, како желите да се обавештења приказују?"</string>
<string name="lock_screen_notifications_interstitial_title" msgid="2832587379332443505">"Обавештења"</string>
- <string name="lock_screen_notifications_summary_show_profile" msgid="8908775469657073273">"Приказуј сав садржај обавештења о профилу за Work"</string>
- <string name="lock_screen_notifications_summary_hide_profile" msgid="7898086300511010591">"Сакриј осетљив садржај профила за Work"</string>
+ <string name="lock_screen_notifications_summary_show_profile" msgid="8908775469657073273">"Приказуј сав садржај обавештења о пословном профилу"</string>
+ <string name="lock_screen_notifications_summary_hide_profile" msgid="7898086300511010591">"Сакриј осетљив садржај пословног профила"</string>
<string name="lock_screen_notifications_interstitial_message_profile" msgid="3324187664458600354">"Када је уређај закључан, како желите да се приказују обавештења о профилу?"</string>
<string name="lock_screen_notifications_interstitial_title_profile" msgid="4043621508889929254">"Обавештења о профилу"</string>
<string name="notifications_title" msgid="8334011924253810654">"Обавештења"</string>
@@ -3405,7 +3405,7 @@
<string name="notifications_sent_weekly" msgid="5859675428990259432">"~<xliff:g id="NUMBER">%1$s</xliff:g> недељно"</string>
<string name="notifications_sent_never" msgid="237997329598144638">"Никад"</string>
<string name="manage_notification_access_title" msgid="5348743662189787547">"Приступ обавештењима"</string>
- <string name="work_profile_notification_access_blocked_summary" msgid="8148871282484870576">"Приступ обавештењима профила за Work је блокиран"</string>
+ <string name="work_profile_notification_access_blocked_summary" msgid="8148871282484870576">"Приступ обавештењима пословног профила је блокиран"</string>
<string name="manage_notification_access_summary_zero" msgid="236809421271593016">"Апликације не могу да читају обавештења"</string>
<plurals name="manage_notification_access_summary_nonzero" formatted="false" msgid="8496218948429646792">
<item quantity="one">%d апликација може да чита обавештења</item>
@@ -3612,7 +3612,7 @@
<string name="screen_pinning_unlock_pin" msgid="1441705536015645023">"Тражи PIN пре откачињања"</string>
<string name="screen_pinning_unlock_password" msgid="1017776884000170841">"Тражи лозинку пре откачињања"</string>
<string name="screen_pinning_unlock_none" msgid="9183040569733226911">"Закључај уређај пре откачињања"</string>
- <string name="opening_paragraph_delete_profile_unknown_company" msgid="2350380017136403670">"Овим профилом за Work управља:"</string>
+ <string name="opening_paragraph_delete_profile_unknown_company" msgid="2350380017136403670">"Овим пословним профилом управља:"</string>
<string name="managing_admin" msgid="3212584016377581608">"Управља <xliff:g id="ADMIN_APP_LABEL">%s</xliff:g>"</string>
<string name="experimental_preference" msgid="5903223408406906322">"(Експериментално)"</string>
<string name="encryption_interstitial_header" msgid="3298397268731647519">"Безбедно покретање"</string>
@@ -3770,8 +3770,8 @@
<string name="high_power_off" msgid="5906679734326490426">"Оптимизација коришћења батерије"</string>
<string name="high_power_system" msgid="739584574711292753">"Оптимизација батерије није доступна"</string>
<string name="high_power_desc" msgid="333756885680362741">"Не примењујте оптимизацију батерије. Може брже да испразни батерију."</string>
- <string name="high_power_prompt_title" msgid="2805745781720454052">"Желите ли да дозволите да апликација увек буде активна у позадини?"</string>
- <string name="high_power_prompt_body" msgid="8067395096053552289">"Ако дозволите да апликација <xliff:g id="APP_NAME">%1$s</xliff:g> увек буде активна у позадини, то може да смањи трајање батерије. \n\nКасније можете то да промените у одељку Подешавања > Апликације и обавештења."</string>
+ <string name="high_power_prompt_title" msgid="2805745781720454052">"Дозвољавате да апликација увек буде активна у позадини?"</string>
+ <string name="high_power_prompt_body" msgid="8067395096053552289">"Ако дозволите да апликација <xliff:g id="APP_NAME">%1$s</xliff:g> увек буде активна у позадини, то може да скрати трајање батерије. \n\nКасније можете то да промените у одељку Подешавања > Апликације и обавештења."</string>
<string name="battery_summary" msgid="4345690800899981339">"Потрошено је <xliff:g id="PERCENTAGE">%1$s</xliff:g> од последњег потпуног пуњења"</string>
<string name="battery_power_management" msgid="2853925857548647969">"Управљање напајањем"</string>
<string name="no_battery_summary" msgid="4105932628367471314">"Батерија није коришћена од последњег потпуног пуњења"</string>
@@ -3857,7 +3857,7 @@
<string name="ignore_optimizations_off_desc" msgid="5598702251817814289">"Препоручено за дуже трајање батерије"</string>
<string name="ignore_optimizations_title" msgid="7924345545276166305">"Желите ли да дозволите апликацији <xliff:g id="APP">%s</xliff:g> да игнорише оптимизације батерије?"</string>
<string name="app_list_preference_none" msgid="7100409177446935028">"Ништа"</string>
- <string name="work_profile_usage_access_warning" msgid="403208064382097510">"Искључивање приступа коришћењу за ову апликацију не спречава администратора да прати потрошњу података за апликације на профилу за Work"</string>
+ <string name="work_profile_usage_access_warning" msgid="403208064382097510">"Искључивање приступа коришћењу за ову апликацију не спречава администратора да прати потрошњу података за апликације на пословном профилу"</string>
<string name="accessibility_lock_screen_progress" msgid="8242917828598820049">"Употребљени знакови: <xliff:g id="COUNT_0">%1$d</xliff:g> од <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="draw_overlay" msgid="2878665072530660668">"Приказ преко других апликација"</string>
<string name="system_alert_window_settings" msgid="3024330223417646567">"Приказ преко других апликација"</string>
@@ -3941,7 +3941,7 @@
<string name="disabled_by_policy_title_suspend_packages" msgid="4254714213391802322">"Не можете да отворите ову апликацију"</string>
<string name="default_admin_support_msg" msgid="5789424433689798637">"Ако имате питања, обратите се ИТ администратору"</string>
<string name="admin_support_more_info" msgid="8737842638087863477">"Још детаља"</string>
- <string name="admin_profile_owner_message" msgid="3199544166281052845">"Администратор може да надгледа апликације и податке повезане са профилом за Work, укључујући подешавања, дозволе, корпоративни приступ, активности на мрежи и информације о локацији уређаја, као и да управља њима."</string>
+ <string name="admin_profile_owner_message" msgid="3199544166281052845">"Администратор може да надгледа апликације и податке повезане са пословним профилом, укључујући подешавања, дозволе, корпоративни приступ, активности на мрежи и информације о локацији уређаја, као и да управља њима."</string>
<string name="admin_profile_owner_user_message" msgid="2991249382056855531">"Администратор може да надгледа апликације и податке повезане са овим корисником, укључујући подешавања, дозволе, корпоративни приступ, активности на мрежи и информације о локацији уређаја, као и да управља њима."</string>
<string name="admin_device_owner_message" msgid="1823477572459610869">"Администратор може да прати апликације и податке повезане са овим уређајем, укључујући подешавања, дозволе, корпоративни приступ, активности на мрежи и информације о локацији уређаја, као и да управља њима."</string>
<string name="condition_turn_off" msgid="4395150881365143558">"Искључи"</string>
@@ -3960,7 +3960,7 @@
<string name="condition_cellular_summary" msgid="3607459310548343777">"Интернет је доступан само преко Wi‑Fi мреже"</string>
<string name="condition_bg_data_title" msgid="184684435298857712">"Уштеда података"</string>
<string name="condition_bg_data_summary" msgid="5194942860807136682">"Функције су ограничене"</string>
- <string name="condition_work_title" msgid="9046811302347490371">"Профил за Work је искључен"</string>
+ <string name="condition_work_title" msgid="9046811302347490371">"Пословни профил је искључен"</string>
<string name="condition_work_summary" msgid="5586134491975748565">"За апликације и обавештења"</string>
<string name="condition_device_muted_action_turn_on_sound" msgid="5849285946804815263">"Укључи звук"</string>
<string name="condition_device_muted_title" msgid="3930542786434609976">"Звук звона је искључен"</string>
@@ -4269,11 +4269,11 @@
<string name="enterprise_privacy_input_method_name" msgid="439610095825218563">"Подешено је на <xliff:g id="APP_LABEL">%s</xliff:g>"</string>
<string name="enterprise_privacy_always_on_vpn_device" msgid="2022700916516458213">"Стално укључен VPN је укључен"</string>
<string name="enterprise_privacy_always_on_vpn_personal" msgid="5644065780843002044">"Стално укључен VPN је укључен на личном профилу"</string>
- <string name="enterprise_privacy_always_on_vpn_work" msgid="6443089897985373564">"Стално укључен VPN је укључен на профилу за Work"</string>
+ <string name="enterprise_privacy_always_on_vpn_work" msgid="6443089897985373564">"Стално укључен VPN је укључен на пословном профилу"</string>
<string name="enterprise_privacy_global_http_proxy" msgid="3862135895716080830">"Глобални HTTP прокси је подешен"</string>
<string name="enterprise_privacy_ca_certs_device" msgid="7715658848470643878">"Поуздани акредитиви"</string>
<string name="enterprise_privacy_ca_certs_personal" msgid="1356447417193483802">"Поуздани акредитиви на личном профилу"</string>
- <string name="enterprise_privacy_ca_certs_work" msgid="836419648894546893">"Поуздани акредитиви на профилу за Work"</string>
+ <string name="enterprise_privacy_ca_certs_work" msgid="836419648894546893">"Поуздани акредитиви на пословном профилу"</string>
<plurals name="enterprise_privacy_number_ca_certs" formatted="false" msgid="7953528945502561752">
<item quantity="one">Најмање <xliff:g id="COUNT_1">%d</xliff:g> CA сертификат</item>
<item quantity="few">Најмање <xliff:g id="COUNT_1">%d</xliff:g> CA сертификата</item>
@@ -4282,7 +4282,7 @@
<string name="enterprise_privacy_lock_device" msgid="1533125067038409945">"Администратор може да закључава уређај и ресетује лозинку"</string>
<string name="enterprise_privacy_wipe_device" msgid="7555287990273929922">"Администратор може да брише све податке са уређаја"</string>
<string name="enterprise_privacy_failed_password_wipe_device" msgid="4101502079202483156">"Неуспели покушаји уноса лозинке пре брисања свих података са уређаја"</string>
- <string name="enterprise_privacy_failed_password_wipe_work" msgid="2881646286634693392">"Неуспели покушаји уноса лозинке пре брисања података са профила за Work"</string>
+ <string name="enterprise_privacy_failed_password_wipe_work" msgid="2881646286634693392">"Неуспели покушаји уноса лозинке пре брисања података са пословног профила"</string>
<plurals name="enterprise_privacy_number_failed_password_wipe" formatted="false" msgid="562550414712223382">
<item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> покушај</item>
<item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> покушаја</item>
@@ -4556,7 +4556,7 @@
<string name="contextual_card_dismiss_confirm_message" msgid="2352465079667730312">"Желите ли да уклоните овај предлог?"</string>
<string name="contextual_card_removed_message" msgid="4047307820743366876">"Предлог је уклоњен"</string>
<string name="contextual_card_undo_dismissal_text" msgid="5009245286931852012">"Опозови"</string>
- <string name="low_storage_summary" msgid="4562224870189133400">"Преостало је мало слободног меморијског простора. <xliff:g id="PERCENTAGE">%1$s</xliff:g> је искоришћено – <xliff:g id="FREE_SPACE">%2$s</xliff:g> је слободно"</string>
+ <string name="low_storage_summary" msgid="4562224870189133400">"Нема много простора. <xliff:g id="PERCENTAGE">%1$s</xliff:g> је искоришћено – <xliff:g id="FREE_SPACE">%2$s</xliff:g> је слободно"</string>
<string name="contextual_card_feedback_send" msgid="8698649023854350623">"Пошаљите повратне информације"</string>
<string name="contextual_card_feedback_confirm_message" msgid="3987973028353264878">"Желите ли да нам пошаљете повратне информације за овај предлог?"</string>
<string name="copyable_slice_toast" msgid="1357518174923789947">"Копирано је у привремену меморију: <xliff:g id="COPY_CONTENT">%1$s</xliff:g>"</string>
diff --git a/tests/CarDeveloperOptions/res/values-sv/strings.xml b/tests/CarDeveloperOptions/res/values-sv/strings.xml
index 5a06fbd..3a0b627 100644
--- a/tests/CarDeveloperOptions/res/values-sv/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-sv/strings.xml
@@ -1621,11 +1621,11 @@
<string name="tether_settings_disabled_on_data_saver" msgid="3682544845899910726">"Det går inte att använda internetdelning eller trådlösa surfzoner när Databesparing är aktiverat."</string>
<string name="usb_title" msgid="7480927657535578688">"USB"</string>
<string name="usb_tethering_button_text" msgid="6242228383142012332">"Delning via USB"</string>
- <string name="usb_tethering_subtext" product="default" msgid="1573513260339548671">"Dela mobilens internetanslutning via USB"</string>
+ <string name="usb_tethering_subtext" product="default" msgid="1573513260339548671">"Dela telefonens internetanslutning via USB"</string>
<string name="usb_tethering_subtext" product="tablet" msgid="154536000235361034">"Dela surfplattans internetanslutning via USB"</string>
<string name="bluetooth_tether_checkbox_text" msgid="7257293066139372774">"Delning via Bluetooth"</string>
<string name="bluetooth_tethering_subtext" product="tablet" msgid="6868756914621131635">"Dela surfplattans internetanslutning via Bluetooth"</string>
- <string name="bluetooth_tethering_subtext" product="default" msgid="9167912297565425178">"Dela mobilens internetanslutning via Bluetooth"</string>
+ <string name="bluetooth_tethering_subtext" product="default" msgid="9167912297565425178">"Dela telefonens internetanslutning via Bluetooth"</string>
<string name="bluetooth_tethering_off_subtext_config" msgid="3981528184780083266">"<xliff:g id="DEVICE_NAME">%1$d</xliff:g>s internetanslutning delas via Bluetooth"</string>
<string name="bluetooth_tethering_overflow_error" msgid="6946561351369376943">"Det går inte att dela med mer än <xliff:g id="MAXCONNECTION">%1$d</xliff:g> enheter."</string>
<string name="bluetooth_untether_blank" msgid="5428300773782256084">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> kopplas från."</string>
diff --git a/tests/CarDeveloperOptions/res/values-sw/arrays.xml b/tests/CarDeveloperOptions/res/values-sw/arrays.xml
index faff8c7..0bfc1db 100644
--- a/tests/CarDeveloperOptions/res/values-sw/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-sw/arrays.xml
@@ -455,7 +455,7 @@
<string-array name="color_picker">
<item msgid="3151827842194201728">"Kijani"</item>
<item msgid="3228505970082457852">"Samawati"</item>
- <item msgid="6590260735734795647">"Bluu"</item>
+ <item msgid="6590260735734795647">"Nili"</item>
<item msgid="3521763377357218577">"Zambarau"</item>
<item msgid="5932337981182999919">"Waridi"</item>
<item msgid="5642914536624000094">"Nyekundu"</item>
diff --git a/tests/CarDeveloperOptions/res/values-sw/strings.xml b/tests/CarDeveloperOptions/res/values-sw/strings.xml
index cf93c51..8f1f7fb 100644
--- a/tests/CarDeveloperOptions/res/values-sw/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-sw/strings.xml
@@ -2280,7 +2280,7 @@
<string name="battery_tip_early_heads_up_title" msgid="707163785378746813">"Washa Kiokoa Betri"</string>
<string name="battery_tip_early_heads_up_summary" msgid="4231489566422395156">"Huenda chaji ikaisha haraka zaidi"</string>
<string name="battery_tip_early_heads_up_done_title" msgid="112550885882648429">"Kiokoa Betri kimewashwa"</string>
- <string name="battery_tip_early_heads_up_done_summary" msgid="8692257022962771181">"Huenda ikadhibiti baadhi ya vipengele"</string>
+ <string name="battery_tip_early_heads_up_done_summary" msgid="8692257022962771181">"Huenda baadhi ya vipengele vimedhibitiwa"</string>
<string name="battery_tip_high_usage_title" product="default" msgid="4103005178310487352">"Simu imetumika sana kuliko kawaida"</string>
<string name="battery_tip_high_usage_title" product="tablet" msgid="1019583260005768965">"Kompyuta kibao imetumika sana kuliko kawaida"</string>
<string name="battery_tip_high_usage_title" product="device" msgid="8304138287288309490">"Kifaa kimetumika sana kuliko kawaida"</string>
diff --git a/tests/CarDeveloperOptions/res/values-ta/strings.xml b/tests/CarDeveloperOptions/res/values-ta/strings.xml
index 1d8675e..018bfc0 100644
--- a/tests/CarDeveloperOptions/res/values-ta/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-ta/strings.xml
@@ -439,9 +439,9 @@
<string name="security_settings_fingerprint_preference_summary_none" msgid="3613424536269750172"></string>
<string name="security_settings_fingerprint_enroll_introduction_title" msgid="889558002683900544">"கைரேகை மூலம் திறக்கலாம்"</string>
<string name="security_settings_fingerprint_enroll_introduction_title_unlock_disabled" msgid="7915504118657864429">"கைரேகையைப் பயன்படுத்தவும்"</string>
- <string name="security_settings_fingerprint_enroll_introduction_message" msgid="5586198131986682472">"மொபைலைத் திறக்க, வாங்குவதை அங்கீகரிக்க அல்லது பயன்பாடுகளில் உள்நுழைய, கைரேகை சென்சாரைத் தொட்டால் போதும். கைரேகையைப் பயன்படுத்தி மேலே குறிப்பிட்டுள்ளவற்றைச் செய்ய முடியும் என்பதால், அனைவரின் கைரேகைகளையும் இதில் சேர்க்க வேண்டாம்.\n\nகுறிப்பு: எளிதில் ஊகிக்க முடியாத வடிவம் அல்லது பின்னைப் பயன்படுத்தும் போது கிடைக்கும் பாதுகாப்பை விட, கைரேகையைப் பயன்படுத்தும் போது குறைவான பாதுகாப்பே கிடைக்கும்."</string>
+ <string name="security_settings_fingerprint_enroll_introduction_message" msgid="5586198131986682472">"மொபைலைத் திறக்க, வாங்குவதை அங்கீகரிக்க அல்லது பயன்பாடுகளில் உள்நுழைய, கைரேகை சென்சாரைத் தொட்டால் போதும். கைரேகையைப் பயன்படுத்தி மேலே குறிப்பிட்டுள்ளவற்றைச் செய்ய முடியும் என்பதால், அனைவரின் கைரேகைகளையும் இதில் சேர்க்க வேண்டாம்.\n\nகுறிப்பு: எளிதில் ஊகிக்க முடியாத பேட்டர்ன் அல்லது பின்னைப் பயன்படுத்தும் போது கிடைக்கும் பாதுகாப்பை விட, கைரேகையைப் பயன்படுத்தும் போது குறைவான பாதுகாப்பே கிடைக்கும்."</string>
<string name="security_settings_fingerprint_enroll_introduction_message_unlock_disabled" msgid="1640839304679275468">"மொபைலைத் திறக்க அல்லது வாங்குவதை அங்கீகரிக்க, உங்கள் கைரேகையைப் பயன்படுத்தவும்.\n\n குறிப்பு: இந்தச் சாதனத்தைத் திறக்க, கைரேகையைப் பயன்படுத்த முடியாது. மேலும் தகவலுக்கு, உங்கள் நிறுவனத்தின் நிர்வாகியைத் தொடர்புகொள்ளவும்."</string>
- <string name="security_settings_fingerprint_enroll_introduction_message_setup" msgid="6734490666593320711">"மொபைலைத் திறக்க அல்லது வாங்குவதை அங்கீகரிக்க, உங்கள் கைரேகையைப் பயன்படுத்தவும்.\nகுறிப்பு: எளிதில் ஊகிக்க முடியாத வடிவம் அல்லது பின்னைப் பயன்படுத்தும் போது கிடைக்கும் பாதுகாப்பை விட, கைரேகையைப் பயன்படுத்தும் போது குறைவான பாதுகாப்பே கிடைக்கும்.\n"</string>
+ <string name="security_settings_fingerprint_enroll_introduction_message_setup" msgid="6734490666593320711">"மொபைலைத் திறக்க அல்லது வாங்குவதை அங்கீகரிக்க, உங்கள் கைரேகையைப் பயன்படுத்தவும்.\nகுறிப்பு: எளிதில் ஊகிக்க முடியாத பேட்டர்ன் அல்லது பின்னைப் பயன்படுத்தும் போது கிடைக்கும் பாதுகாப்பை விட, கைரேகையைப் பயன்படுத்தும் போது குறைவான பாதுகாப்பே கிடைக்கும்.\n"</string>
<string name="security_settings_fingerprint_enroll_introduction_cancel" msgid="9168637333731599827">"ரத்துசெய்"</string>
<string name="security_settings_fingerprint_enroll_introduction_continue" msgid="271662150372486535">"தொடரவும்"</string>
<string name="security_settings_fingerprint_enroll_introduction_cancel_setup" msgid="756928427429893070">"தவிர்"</string>
@@ -508,8 +508,8 @@
<string name="crypt_keeper_encrypt_title" product="tablet" msgid="2292129135369853167">"டேப்லெட்டை என்க்ரிப்ட் செய்"</string>
<string name="crypt_keeper_encrypt_title" product="default" msgid="3110852053238357832">"மொபைலை என்க்ரிப்ட் செய்"</string>
<string name="crypt_keeper_encrypted_summary" msgid="2438498691741626642">"என்க்ரிப்ட் செய்யப்பட்டது"</string>
- <string name="crypt_keeper_desc" product="tablet" msgid="9142792050252407734">"உங்கள் கணக்குகள், அமைப்புகள், பதிவிறக்கிய ஆப்ஸ் மற்றும் அவற்றின் தரவு, மீடியா மற்றும் பிற கோப்புகள் என அனைத்தையும் என்க்ரிப்ட் செய்யலாம். உங்கள் டேப்லெட்டை என்க்ரிப்ட் செய்த பிறகு, திரைப்பூட்டை (அதாவது வடிவம் அல்லது பின் அல்லது கடவுச்சொல்) அமைத்திருந்தால், ஒவ்வொரு முறையும் டேப்லெட்டை இயக்கும்போது குறிநீக்குவதற்கு திரையைத் திறக்க வேண்டும். உங்களின் எல்லா தரவையும் அழித்து, ஆரம்ப நிலைக்கு மீட்டமைப்பதே குறிநீக்குவதற்கான மற்றொரு வழியாகும்.\n\nஎன்க்ரிப்ட் செய்வதற்கு ஒரு மணிநேரம் அல்லது அதற்கு மேல் ஆகலாம். சார்ஜ் செய்த பேட்டரியுடன் தொடங்கி, செயல் முடியும் வரை சார்ஜ் ஆகும் நிலையிலேயே வைக்கவும். செயலில் குறுக்கிட்டால், உங்கள் தரவில் சிலவற்றை அல்லது மொத்தத்தையும் இழப்பீர்கள்."</string>
- <string name="crypt_keeper_desc" product="default" msgid="1996334685607444282">"உங்கள் கணக்குகள், அமைப்புகள், பதிவிறக்கிய ஆப்ஸ் மற்றும் அவற்றின் தரவு, மீடியா மற்றும் பிற கோப்புகள் என அனைத்தையும் என்க்ரிப்ட் செய்யலாம். உங்கள் மொபைலை என்க்ரிப்ட் செய்த பிறகு, திரைப்பூட்டை (அதாவது வடிவம் அல்லது பின் அல்லது கடவுச்சொல்) அமைத்திருந்தால், ஒவ்வொரு முறையும் மொபைலை இயக்கும்போது குறிநீக்குவதற்கு திரையைத் திறக்க வேண்டும். உங்களின் எல்லா தரவையும் அழித்து, ஆரம்ப நிலைக்கு மீட்டமைப்பதே குறிநீக்குவதற்கான மற்றொரு வழியாகும்.\n\nஎன்க்ரிப்ட் செய்வதற்கு ஒரு மணிநேரம் அல்லது அதற்கு மேல் ஆகலாம். சார்ஜ் செய்த பேட்டரியுடன் தொடங்கி, செயல் முடியும் வரை சார்ஜ் ஆகும் நிலையிலேயே வைக்கவும். செயலில் குறுக்கிட்டால், உங்கள் தரவில் சிலவற்றை அல்லது மொத்தத்தையும் இழப்பீர்கள்."</string>
+ <string name="crypt_keeper_desc" product="tablet" msgid="9142792050252407734">"உங்கள் கணக்குகள், அமைப்புகள், பதிவிறக்கிய ஆப்ஸ் மற்றும் அவற்றின் தரவு, மீடியா மற்றும் பிற கோப்புகள் என அனைத்தையும் என்க்ரிப்ட் செய்யலாம். உங்கள் டேப்லெட்டை என்க்ரிப்ட் செய்த பிறகு, திரைப்பூட்டை (அதாவது பேட்டர்ன் அல்லது பின் அல்லது கடவுச்சொல்) அமைத்திருந்தால், ஒவ்வொரு முறையும் டேப்லெட்டை இயக்கும்போது குறிநீக்குவதற்கு திரையைத் திறக்க வேண்டும். உங்களின் எல்லா தரவையும் அழித்து, ஆரம்ப நிலைக்கு மீட்டமைப்பதே குறிநீக்குவதற்கான மற்றொரு வழியாகும்.\n\nஎன்க்ரிப்ட் செய்வதற்கு ஒரு மணிநேரம் அல்லது அதற்கு மேல் ஆகலாம். சார்ஜ் செய்த பேட்டரியுடன் தொடங்கி, செயல் முடியும் வரை சார்ஜ் ஆகும் நிலையிலேயே வைக்கவும். செயலில் குறுக்கிட்டால், உங்கள் தரவில் சிலவற்றை அல்லது மொத்தத்தையும் இழப்பீர்கள்."</string>
+ <string name="crypt_keeper_desc" product="default" msgid="1996334685607444282">"உங்கள் கணக்குகள், அமைப்புகள், பதிவிறக்கிய ஆப்ஸ் மற்றும் அவற்றின் தரவு, மீடியா மற்றும் பிற கோப்புகள் என அனைத்தையும் என்க்ரிப்ட் செய்யலாம். உங்கள் மொபைலை என்க்ரிப்ட் செய்த பிறகு, திரைப்பூட்டை (அதாவது பேட்டர்ன் அல்லது பின் அல்லது கடவுச்சொல்) அமைத்திருந்தால், ஒவ்வொரு முறையும் மொபைலை இயக்கும்போது குறிநீக்குவதற்கு திரையைத் திறக்க வேண்டும். உங்களின் எல்லா தரவையும் அழித்து, ஆரம்ப நிலைக்கு மீட்டமைப்பதே குறிநீக்குவதற்கான மற்றொரு வழியாகும்.\n\nஎன்க்ரிப்ட் செய்வதற்கு ஒரு மணிநேரம் அல்லது அதற்கு மேல் ஆகலாம். சார்ஜ் செய்த பேட்டரியுடன் தொடங்கி, செயல் முடியும் வரை சார்ஜ் ஆகும் நிலையிலேயே வைக்கவும். செயலில் குறுக்கிட்டால், உங்கள் தரவில் சிலவற்றை அல்லது மொத்தத்தையும் இழப்பீர்கள்."</string>
<string name="crypt_keeper_button_text" product="tablet" msgid="7918671468758813824">"டேப்லெட்டை என்க்ரிப்ட் செய்"</string>
<string name="crypt_keeper_button_text" product="default" msgid="8737394386627318489">"மொபைலை என்க்ரிப்ட் செய்"</string>
<string name="crypt_keeper_low_charge_text" msgid="1422879728632636311">"உங்கள் பேட்டரியை சார்ஜ் செய்து மீண்டும் முயற்சிக்கவும்."</string>
@@ -561,13 +561,13 @@
<string name="unlock_set_unlock_launch_picker_summary_lock_after_timeout" msgid="3861167251234952373">"<xliff:g id="UNLOCK_METHOD">%1$s</xliff:g> / உறக்கத்திற்குப் பின் <xliff:g id="TIMEOUT_STRING">%2$s</xliff:g>"</string>
<string name="unlock_set_unlock_launch_picker_title_profile" msgid="7976345264630422921">"பணிச் சுயவிவரப் பூட்டு"</string>
<string name="unlock_set_unlock_launch_picker_change_title" msgid="32310692507029407">"லாக் ஸ்கிரீனை மாற்றவும்"</string>
- <string name="unlock_set_unlock_launch_picker_change_summary" msgid="2072792784866320522">"வடிவம், பின் அல்லது கடவுச்சொல் பாதுகாப்பை மாற்றவும் அல்லது முடக்கவும்."</string>
+ <string name="unlock_set_unlock_launch_picker_change_summary" msgid="2072792784866320522">"பேட்டர்ன், பின் அல்லது கடவுச்சொல் பாதுகாப்பை மாற்றவும் அல்லது முடக்கவும்."</string>
<string name="unlock_set_unlock_launch_picker_enable_summary" msgid="9070847611379078795">"திரையைப் பூட்டுவதற்கான முறையைத் தேர்வுசெய்யவும்"</string>
<string name="unlock_set_unlock_off_title" msgid="5049876793411416079">"ஏதுமில்லை"</string>
<string name="unlock_set_unlock_off_summary" msgid="3997346045783359119"></string>
<string name="unlock_set_unlock_none_title" msgid="1922027966983146392">"ஸ்வைப்"</string>
<string name="unlock_set_unlock_none_summary" msgid="4044529413627659031">"பாதுகாப்பு இல்லை"</string>
- <string name="unlock_set_unlock_pattern_title" msgid="7533759994999423587">"வடிவம்"</string>
+ <string name="unlock_set_unlock_pattern_title" msgid="7533759994999423587">"பேட்டர்ன்"</string>
<string name="unlock_set_unlock_pattern_summary" msgid="8858697834522201333">"மிதமான பாதுகாப்பு"</string>
<string name="unlock_set_unlock_pin_title" msgid="361479901761948207">"பின்"</string>
<string name="unlock_set_unlock_pin_summary" msgid="8076921768675948228">"மிதமானது முதல் அதிக பாதுகாப்பு"</string>
@@ -575,7 +575,7 @@
<string name="unlock_set_unlock_password_summary" msgid="7042787631866059147">"அதிகப் பாதுகாப்பு"</string>
<string name="unlock_set_do_later_title" msgid="2939110070503695956">"இப்போது வேண்டாம்"</string>
<string name="current_screen_lock" msgid="398328543694154510">"தற்போதைய திரைப் பூட்டு"</string>
- <string name="fingerprint_unlock_set_unlock_pattern" msgid="132337696546315927">"கைரேகை + வடிவம்"</string>
+ <string name="fingerprint_unlock_set_unlock_pattern" msgid="132337696546315927">"கைரேகை + பேட்டர்ன்"</string>
<string name="fingerprint_unlock_set_unlock_pin" msgid="886426673328906002">"கைரேகை + பின்"</string>
<string name="fingerprint_unlock_set_unlock_password" msgid="3325527833422156515">"கைரேகை + கடவுச்சொல்"</string>
<string name="fingerprint_unlock_skip_fingerprint" msgid="2063700014903801639">"கைரேகையின்றி தொடர்க"</string>
@@ -588,14 +588,14 @@
<string name="unlock_set_unlock_disabled_summary" msgid="1713159782896140817">"நிர்வாகி, என்கிரிப்ஷன் பாலிசி/நற்சான்று சேமிப்பகம் காரணமாக முடக்கப்பட்டது"</string>
<string name="unlock_set_unlock_mode_off" msgid="2950701212659081973">"ஏதுமில்லை"</string>
<string name="unlock_set_unlock_mode_none" msgid="3441605629077912292">"ஸ்வைப்"</string>
- <string name="unlock_set_unlock_mode_pattern" msgid="8564909572968419459">"வடிவம்"</string>
+ <string name="unlock_set_unlock_mode_pattern" msgid="8564909572968419459">"பேட்டர்ன்"</string>
<string name="unlock_set_unlock_mode_pin" msgid="7828354651668392875">"பின்"</string>
<string name="unlock_set_unlock_mode_password" msgid="397703731925549447">"கடவுச்சொல்"</string>
<string name="unlock_setup_wizard_fingerprint_details" msgid="6515136915205473675">"திரைப் பூட்டு அமைத்ததும், அமைப்புகள் > பாதுகாப்பு என்பதற்குச் சென்று கைரேகையை அமைக்கலாம்."</string>
<string name="unlock_disable_lock_title" msgid="3508492427073600294">"திரைப் பூட்டை முடக்கு"</string>
<string name="unlock_disable_frp_warning_title" msgid="5858589970505254193">"சாதனப் பாதுகாப்பை அகற்றவா?"</string>
<string name="unlock_disable_frp_warning_title_profile" msgid="3814123014295965266">"சுயவிவரப் பாதுகாப்பை அகற்றவா?"</string>
- <string name="unlock_disable_frp_warning_content_pattern" msgid="1843950215687159135">"வடிவம் இல்லாமல் சாதனப் பாதுகாப்பு அம்சங்கள் செயல்படாது."</string>
+ <string name="unlock_disable_frp_warning_content_pattern" msgid="1843950215687159135">"பேட்டர்ன் இல்லாமல் சாதனப் பாதுகாப்பு அம்சங்கள் செயல்படாது."</string>
<string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="8846957650251741548">"பேட்டர்ன் இல்லாமல் சாதனப் பாதுகாப்பு அம்சங்கள் செயல்படாது.<xliff:g id="EMPTY_LINE">
</xliff:g>சேமிக்கப்பட்டிருக்கும் கைரேகைகளும் இந்தச் சாதனத்திலிருந்து அகற்றப்படும். எனவே அவற்றின் மூலம் உங்களால் மொபைலைத் திறக்கவோ, வாங்குவதை அங்கீகரிக்கவோ அல்லது பயன்பாடுகளில் உள்நுழையவோ முடியாது."</string>
@@ -611,7 +611,7 @@
<string name="unlock_disable_frp_warning_content_unknown_fingerprint" msgid="5775815077478538855">"திரைப் பூட்டு இல்லாமல் சாதனப் பாதுகாப்பு அம்சங்கள் செயல்படாது.<xliff:g id="EMPTY_LINE">
</xliff:g>சேமிக்கப்பட்டிருக்கும் கைரேகைகளும் இந்தச் சாதனத்திலிருந்து அகற்றப்படும். எனவே அவற்றின் மூலம் உங்களால் மொபைலைத் திறக்கவோ, வாங்குவதை அங்கீகரிக்கவோ அல்லது பயன்பாடுகளில் உள்நுழையவோ முடியாது."</string>
- <string name="unlock_disable_frp_warning_content_pattern_profile" msgid="2369992898062808499">"வடிவம் இல்லாமல் சுயவிவரப் பாதுகாப்பு அம்சங்கள் செயல்படாது."</string>
+ <string name="unlock_disable_frp_warning_content_pattern_profile" msgid="2369992898062808499">"பேட்டர்ன் இல்லாமல் சுயவிவரப் பாதுகாப்பு அம்சங்கள் செயல்படாது."</string>
<string name="unlock_disable_frp_warning_content_pattern_fingerprint_profile" msgid="8511105093090018735">"பேட்டர்ன் இல்லாமல் சுயவிவரப் பாதுகாப்பு அம்சங்கள் செயல்படாது.<xliff:g id="EMPTY_LINE">
</xliff:g>சேமிக்கப்பட்டிருக்கும் கைரேகைகளும் இந்தச் சுயவிவரத்திலிருந்து அகற்றப்படும். எனவே அவற்றின் மூலம் உங்களால் சுயவிவரத்தைத் திறக்கவோ, வாங்குவதை அங்கீகரிக்கவோ அல்லது பயன்பாடுகளில் உள்நுழையவோ முடியாது."</string>
@@ -1722,7 +1722,7 @@
<string name="lockpassword_choose_lock_generic_header" msgid="4418423132980560119">"எப்படித் திறக்க வேண்டும்?"</string>
<string name="lockpassword_password_set_toast" msgid="601928982984489868">"கடவுச்சொல் அமைக்கப்பட்டது"</string>
<string name="lockpassword_pin_set_toast" msgid="172594825722240059">"பின் அமைக்கப்பட்டது"</string>
- <string name="lockpassword_pattern_set_toast" msgid="6923260369475481406">"வடிவம் அமைக்கப்பட்டது"</string>
+ <string name="lockpassword_pattern_set_toast" msgid="6923260369475481406">"பேட்டர்ன் அமைக்கப்பட்டது"</string>
<string name="lockpassword_choose_your_password_header_for_face" msgid="8823110536502072216">"முக அங்கீகாரத்துக்கு, கடவுச்சொல்லை அமை"</string>
<string name="lockpassword_choose_your_pattern_header_for_face" msgid="5563793748503883666">"முக அங்கீகாரத்துக்கு, பேட்டர்னை அமை"</string>
<string name="lockpassword_choose_your_pin_header_for_face" msgid="7238352632535405068">"முக அங்கீகாரத்துக்கு, பின்னை அமை"</string>
@@ -1746,23 +1746,23 @@
<string name="lockpassword_confirm_your_password_header_frp" msgid="7326670978891793470">"கடவுச்சொல்லைச் சரிபார்க்கவும்"</string>
<string name="lockpassword_invalid_pin" msgid="3059022215815900137">"தவறான பின்"</string>
<string name="lockpassword_invalid_password" msgid="8374331995318204099">"தவறான கடவுச்சொல்"</string>
- <string name="lockpattern_need_to_unlock_wrong" msgid="1328670466959377948">"தவறான வடிவம்"</string>
+ <string name="lockpattern_need_to_unlock_wrong" msgid="1328670466959377948">"தவறான பேட்டர்ன்"</string>
<string name="lock_settings_title" msgid="233657584969886812">"சாதனப் பாதுகாப்பு"</string>
<string name="lockpattern_change_lock_pattern_label" msgid="333149762562581510">"திறக்கும் வடிவத்தை மாற்று"</string>
<string name="lockpattern_change_lock_pin_label" msgid="3435796032210265723">"திறப்பதற்கான பின்னை மாற்று"</string>
- <string name="lockpattern_recording_intro_header" msgid="2262005028838969839">"திறப்பதற்கான வடிவத்தை வரைக"</string>
+ <string name="lockpattern_recording_intro_header" msgid="2262005028838969839">"திறப்பதற்கான பேட்டர்னை வரைக"</string>
<string name="lockpattern_recording_intro_footer" msgid="5426745740754065099">"உதவிக்கு மெனுவை அழுத்தவும்."</string>
<string name="lockpattern_recording_inprogress" msgid="4060818382176523671">"முடிந்ததும் விரலை எடுக்கவும்"</string>
<string name="lockpattern_recording_incorrect_too_short" msgid="6374760294545431845">"குறைந்தது <xliff:g id="NUMBER">%d</xliff:g> புள்ளிகளை இணைக்கவும். மீண்டும் முயற்சிக்கவும்."</string>
- <string name="lockpattern_pattern_entered_header" msgid="2108106638322637851">"வடிவம் பதிவுசெய்யப்பட்டது"</string>
+ <string name="lockpattern_pattern_entered_header" msgid="2108106638322637851">"பேட்டர்ன் பதிவுசெய்யப்பட்டது"</string>
<string name="lockpattern_need_to_confirm" msgid="4079482507985867389">"உறுதிப்படுத்துவதற்கு வடிவத்தை மீண்டும் வரையவும்"</string>
- <string name="lockpattern_pattern_confirmed_header" msgid="5603156929428721407">"திறப்பதற்கான புதிய வடிவம்"</string>
+ <string name="lockpattern_pattern_confirmed_header" msgid="5603156929428721407">"திறப்பதற்கான புதிய பேட்டர்ன்"</string>
<string name="lockpattern_confirm_button_text" msgid="7059311304112902598">"உறுதிசெய்க"</string>
<string name="lockpattern_restart_button_text" msgid="4322968353922529868">"மீண்டும் வரைக"</string>
<string name="lockpattern_retry_button_text" msgid="5473976578241534298">"அழி"</string>
<string name="lockpattern_continue_button_text" msgid="3328913552656376892">"தொடர்க"</string>
- <string name="lockpattern_settings_title" msgid="5152005866870766842">"திறப்பதற்கான வடிவம்"</string>
- <string name="lockpattern_settings_enable_title" msgid="8508410891939268080">"வடிவம் தேவை"</string>
+ <string name="lockpattern_settings_title" msgid="5152005866870766842">"திறப்பதற்கான பேட்டர்ன்"</string>
+ <string name="lockpattern_settings_enable_title" msgid="8508410891939268080">"பேட்டர்ன் தேவை"</string>
<string name="lockpattern_settings_enable_summary" msgid="8027605503917737512">"திரையைத் திறப்பதற்கான வடிவத்தை வரைய வேண்டும்"</string>
<string name="lockpattern_settings_enable_visible_pattern_title" msgid="4935583222709647096">"வடிவத்தைக் காணும்படி செய்"</string>
<string name="lockpattern_settings_enable_visible_pattern_title_profile" msgid="5338893138982642228">"சுயவிவரப் பேட்டர்னை வரையும் போது காட்டு"</string>
@@ -2638,7 +2638,7 @@
<string name="enter_password" msgid="2963496904625715235">"Androidஐத் தொடங்க, கடவுச்சொல்லை உள்ளிடவும்"</string>
<string name="enter_pin" msgid="7140938268709546890">"Androidஐத் தொடங்க, PINஐ உள்ளிடவும்"</string>
<string name="enter_pattern" msgid="1653841963422825336">"Androidஐத் தொடங்க, வடிவத்தை வரையவும்"</string>
- <string name="cryptkeeper_wrong_pattern" msgid="4580105105385125467">"தவறான வடிவம்"</string>
+ <string name="cryptkeeper_wrong_pattern" msgid="4580105105385125467">"தவறான பேட்டர்ன்"</string>
<string name="cryptkeeper_wrong_password" msgid="1709534330303983166">"தவறான கடவுச்சொல்"</string>
<string name="cryptkeeper_wrong_pin" msgid="857757190077859245">"தவறான பின்"</string>
<string name="checking_decryption" msgid="5927759912073053101">"சரிபார்க்கிறது..."</string>
@@ -3091,7 +3091,7 @@
<string name="keywords_ignore_optimizations" msgid="9127632532176249438">"மேம்படுத்தல்களைத் தவிர்த்தல், பேட்டரியைக் குறைவாகப் பயன்படுத்துதல், ஆப்ஸ் காத்திருப்பு நிலை"</string>
<string name="keywords_color_mode" msgid="8893345199519181751">"அதிர்வு, RGB, sRGB, வண்ணம், இயற்கை, நிலையானது"</string>
<string name="keywords_color_temperature" msgid="2255253972992035046">"வண்ணம், வண்ண வெப்பநிலை, D65, D73, வெள்ளை, மஞ்சள், நீலம், அடர், வெளிர்"</string>
- <string name="keywords_lockscreen" msgid="4936846554280830394">"திறப்பதற்கு ஸ்லைடு செய்தல், கடவுச்சொல், வடிவம், பின்"</string>
+ <string name="keywords_lockscreen" msgid="4936846554280830394">"திறப்பதற்கு ஸ்லைடு செய்தல், கடவுச்சொல், பேட்டர்ன், பின்"</string>
<string name="keywords_profile_challenge" msgid="8653718001253979611">"பணிச்சுமை, பணி, சுயவிவரம்"</string>
<string name="keywords_unification" msgid="2020759909366983593">"பணிக் கணக்கு, நிர்வகிக்கப்படும் சுயவிவரம், ஒருங்கிணை, ஒருங்கிணைத்தல், பணி, சுயவிவரம்"</string>
<string name="keywords_gesture" msgid="5031323247529869644">"சைகைகள்"</string>
@@ -3569,7 +3569,7 @@
<string name="encryption_interstitial_message_pattern" msgid="5620724295995735120">"இந்தச் சாதனத்தைத் துவக்கும் முன், பேட்டர்ன் தேவைப்படுமாறு அமைத்து, மேலும் பாதுகாக்கலாம். சாதனம் துவங்கும் வரை, அழைப்புகள், செய்திகள் அல்லது அலாரங்கள் உள்ளிட்ட அறிவிப்புகளை இதில் பெற முடியாது. \n\nஉங்கள் சாதனம் தொலைந்து போனாலோ திருடப்பட்டாலோ, அதில் உள்ள உங்கள் டேட்டாவைப் பாதுகாக்க இதைக் கடைபிடிக்கலாம். சாதனத்தைத் தொடங்கும் போது, பேட்டர்னைக் கேட்பதை அமைக்கவா?"</string>
<string name="encryption_interstitial_message_password" msgid="7236688467386126401">"இந்தச் சாதனத்தைத் துவக்கும் முன், கடவுச்சொல் தேவைப்படுமாறு அமைத்து, மேலும் பாதுகாக்கலாம். சாதனம் துவங்கும் வரை, அழைப்புகள், செய்திகள் அல்லது அலாரங்கள் உள்ளிட்ட அறிவிப்புகளை இதில் பெற முடியாது. \n\nஉங்கள் சாதனம் தொலைந்து போனாலோ திருடப்பட்டாலோ, அதில் உள்ள உங்கள் டேட்டாவைப் பாதுகாக்க இதைக் கடைபிடிக்கலாம். சாதனத்தைத் தொடங்கும் போது, கடவுச்சொல்லைக் கேட்பதை அமைக்கவா?"</string>
<string name="encryption_interstitial_message_pin_for_fingerprint" msgid="3706009740537484517">"சாதனத்தைத் திறக்க கைரேகையைப் பயன்படுத்துவதுடன் சேர்த்து, பின் தேவைப்படுமாறு அமைத்து உங்கள் சாதனத்திற்குக் கூடுதல் பாதுகாப்பு வழங்கிடலாம். சாதனம் துவங்கும் வரை, அழைப்புகள், செய்திகள் அல்லது அலாரங்கள் உள்ளிட்ட அறிவிப்புகளை இதில் பெற முடியாது. \n\nஉங்கள் சாதனம் தொலைந்து போனாலோ திருடப்பட்டாலோ, அதில் உள்ள உங்கள் டேட்டாவைப் பாதுகாக்க இதைக் கடைபிடிக்கலாம். சாதனத்தைத் தொடங்கும் போது, பின்னைக் கேட்பதை அமைக்கவா?"</string>
- <string name="encryption_interstitial_message_pattern_for_fingerprint" msgid="5230877866699023998">"சாதனத்தைத் திறக்க கைரேகையைப் பயன்படுத்துவதுடன் சேர்த்து, வடிவம் தேவைப்படுமாறு அமைத்து உங்கள் சாதனத்திற்குக் கூடுதல் பாதுகாப்பு வழங்கிடலாம். சாதனம் துவங்கும் வரை, அழைப்புகள், செய்திகள் அல்லது அலாரங்கள் உள்ளிட்ட அறிவிப்புகளை இதில் பெற முடியாது. \n\nஉங்கள் சாதனம் தொலைந்து போனாலோ திருடப்பட்டாலோ, அதில் உள்ள உங்கள் டேட்டாவைப் பாதுகாக்க இதைக் கடைபிடிக்கலாம். சாதனத்தைத் தொடங்கும் போது, பேட்டர்னைக் கேட்பதை அமைக்கவா?"</string>
+ <string name="encryption_interstitial_message_pattern_for_fingerprint" msgid="5230877866699023998">"சாதனத்தைத் திறக்க கைரேகையைப் பயன்படுத்துவதுடன் சேர்த்து, பேட்டர்ன் தேவைப்படுமாறு அமைத்து உங்கள் சாதனத்திற்குக் கூடுதல் பாதுகாப்பு வழங்கிடலாம். சாதனம் துவங்கும் வரை, அழைப்புகள், செய்திகள் அல்லது அலாரங்கள் உள்ளிட்ட அறிவிப்புகளை இதில் பெற முடியாது. \n\nஉங்கள் சாதனம் தொலைந்து போனாலோ திருடப்பட்டாலோ, அதில் உள்ள உங்கள் டேட்டாவைப் பாதுகாக்க இதைக் கடைபிடிக்கலாம். சாதனத்தைத் தொடங்கும் போது, பேட்டர்னைக் கேட்பதை அமைக்கவா?"</string>
<string name="encryption_interstitial_message_password_for_fingerprint" msgid="8451977276748128814">"சாதனத்தைத் திறக்க கைரேகையைப் பயன்படுத்துவதுடன் சேர்த்து, கடவுச்சொல் தேவைப்படுமாறு அமைத்து உங்கள் சாதனத்திற்குக் கூடுதல் பாதுகாப்பு வழங்கிடலாம். சாதனம் தொடங்கும் வரை, அழைப்புகள், செய்திகள் அல்லது அலாரங்கள் உள்ளிட்ட அறிவிப்புகளை இதில் பெற முடியாது. \n\nஉங்கள் சாதனம் தொலைந்து போனாலோ திருடப்பட்டாலோ, அதில் உள்ள உங்கள் டேட்டாவைப் பாதுகாக்க இதைக் கடைபிடிக்கலாம். சாதனத்தைத் தொடங்கும் போது, கடவுச்சொல்லைக் கேட்பதை அமைக்கவா?"</string>
<string name="encryption_interstitial_message_pin_for_face" msgid="7469243836881325172">"சாதனத்தைத் திறப்பதற்கு உங்கள் முகத்தைப் பயன்படுத்துவது மட்டுமல்லாமல், சாதனம் தொடங்கும் முன்பாக, பின்னை உள்ளிடும்படி அமைத்து, கூடுதல் பாதுகாப்பை வழங்கலாம். சாதனம் தொடங்கும்வரை, அழைப்புகள், மெசேஜ்கள், அலாரங்கள் உள்ளிட்ட எவற்றையும் சாதனத்தால் பெற இயலாது.\n\nசாதனம் தொலைந்துவிட்டாலோ திருடப்பட்டாலோ, அதிலுள்ள தரவைப் பாதுகாக்க இது உதவும். சாதனத்தைத் தொடங்கும்போது கடவுச்சொல்லைக் கேட்குமாறு அமைக்கவா?"</string>
<string name="encryption_interstitial_message_pattern_for_face" msgid="9221235885895441797">"சாதனத்தைத் திறப்பதற்கு உங்கள் முகத்தைப் பயன்படுத்துவது மட்டுமல்லாமல், சாதனம் தொடங்கும் முன்பாக, பேட்டர்னை உள்ளிடும்படி அமைத்து, கூடுதல் பாதுகாப்பை வழங்கலாம். சாதனம் தொடங்கும்வரை, அழைப்புகள், மெசேஜ்கள், அலாரங்கள் உள்ளிட்ட எவற்றையும் சாதனத்தால் பெற இயலாது. \n\nசாதனம் தொலைந்துவிட்டாலோ திருடப்பட்டாலோ, அதிலுள்ள தரவைப் பாதுகாக்க இது உதவும். சாதனத்தைத் தொடங்கும்போது கடவுச்சொல்லைக் கேட்குமாறு அமைக்கவா?"</string>
@@ -3579,7 +3579,7 @@
<string name="restricted_true_label" msgid="1545180379083441282">"கட்டுப்படுத்தியது"</string>
<string name="restricted_false_label" msgid="4512495920090068495">"ஆப்ஸ் கட்டுப்படுத்தப்படவில்லை"</string>
<string name="encrypt_talkback_dialog_require_pin" msgid="2781758476498571031">"பின் தேவையா?"</string>
- <string name="encrypt_talkback_dialog_require_pattern" msgid="8705104812047332411">"வடிவம் தேவையா?"</string>
+ <string name="encrypt_talkback_dialog_require_pattern" msgid="8705104812047332411">"பேட்டர்ன் தேவையா?"</string>
<string name="encrypt_talkback_dialog_require_password" msgid="5070710417271353306">"கடவுச்சொல் தேவையா?"</string>
<string name="encrypt_talkback_dialog_message_pin" msgid="1912533826818077891">"இந்தச் சாதனத்தைத் துவக்க பின்னை நீங்கள் பயன்படுத்தினால், <xliff:g id="SERVICE">%1$s</xliff:g> போன்ற அணுகல்தன்மை சேவைகள் கிடைக்காது."</string>
<string name="encrypt_talkback_dialog_message_pattern" msgid="4415837749933863432">"இந்தச் சாதனத்தைத் துவக்க வடிவத்தை நீங்கள் பயன்படுத்தினால், <xliff:g id="SERVICE">%1$s</xliff:g> போன்ற அணுகல்தன்மை சேவைகள் கிடைக்காது."</string>
@@ -3996,7 +3996,7 @@
<string name="home_app" msgid="3695063566006954160">"முகப்பு"</string>
<string name="no_default_home" msgid="1518949210961918497">"இயல்பு முகப்பு இல்லை"</string>
<string name="lockpattern_settings_require_cred_before_startup" msgid="63693894094570367">"பாதுகாப்பான தொடக்கம்"</string>
- <string name="lockpattern_settings_require_pattern_before_startup_summary" msgid="2330543541999937953">"சாதனத்தைத் தொடங்க, வடிவம் தேவை. முடக்கப்பட்டிருக்கும் போது, இந்தச் சாதனம் அழைப்புகள், செய்திகள், அறிவிப்புகள் அல்லது அலாரங்கள் ஆகியவற்றைப் பெற முடியாது."</string>
+ <string name="lockpattern_settings_require_pattern_before_startup_summary" msgid="2330543541999937953">"சாதனத்தைத் தொடங்க, பேட்டர்ன் தேவை. முடக்கப்பட்டிருக்கும் போது, இந்தச் சாதனம் அழைப்புகள், செய்திகள், அறிவிப்புகள் அல்லது அலாரங்கள் ஆகியவற்றைப் பெற முடியாது."</string>
<string name="lockpattern_settings_require_pin_before_startup_summary" msgid="1058173991832208485">"சாதனத்தைத் தொடங்க, பின் தேவை. முடக்கப்பட்டிருக்கும் போது, இந்தச் சாதனம் அழைப்புகள், செய்திகள், அறிவிப்புகள் அல்லது அலாரங்கள் ஆகியவற்றைப் பெற முடியாது."</string>
<string name="lockpattern_settings_require_password_before_startup_summary" msgid="1266300087760553585">"சாதனத்தைத் தொடங்க, கடவுச்சொல் தேவை. முடக்கப்பட்டிருக்கும் போது, இந்தச் சாதனம் அழைப்புகள், செய்திகள், அறிவிப்புகள் அல்லது அலாரங்கள் ஆகியவற்றைப் பெற முடியாது."</string>
<string name="suggestion_additional_fingerprints" msgid="3434467207282466411">"மற்றொரு கைரேகையைச் சேர்க்கவும்"</string>
diff --git a/tests/CarDeveloperOptions/res/values-te/arrays.xml b/tests/CarDeveloperOptions/res/values-te/arrays.xml
index d6b0610..1ae209a 100644
--- a/tests/CarDeveloperOptions/res/values-te/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-te/arrays.xml
@@ -477,7 +477,7 @@
<item msgid="1008268820118852416">"గణించబడనిదిగా పరిగణించండి"</item>
</string-array>
<string-array name="wifi_privacy_entries">
- <item msgid="6545683814310036454">"యాదృచ్ఛిక MAC అడ్రస్ని ఉపయోగించండి (డిఫాల్ట్)"</item>
+ <item msgid="6545683814310036454">"ర్యాండమ్గా రూపొందించిన MAC అడ్రస్ను ఉపయోగించండి (ఆటోమేటిక్)"</item>
<item msgid="214234417308375326">"MAC పరికరాన్ని ఉపయోగించండి"</item>
</string-array>
<string-array name="wifi_hidden_entries">
diff --git a/tests/CarDeveloperOptions/res/values-te/strings.xml b/tests/CarDeveloperOptions/res/values-te/strings.xml
index 2b6ced4..9bd5ad0 100644
--- a/tests/CarDeveloperOptions/res/values-te/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-te/strings.xml
@@ -207,7 +207,7 @@
<string name="proxy_error_empty_port" msgid="8034561724923076215">"మీరు పోర్ట్ ఫీల్డ్ను పూర్తి చేయాల్సి ఉంటుంది."</string>
<string name="proxy_error_empty_host_set_port" msgid="8471455809508588255">"హోస్ట్ ఫీల్డ్ ఖాళీగా ఉంటే పోర్ట్ ఫీల్డ్ తప్పనిసరిగా ఖాళీగా ఉండాలి."</string>
<string name="proxy_error_invalid_port" msgid="4046559920586100637">"మీరు టైప్ చేసిన పోర్ట్ చెల్లదు."</string>
- <string name="proxy_warning_limited_support" msgid="9026539134219095768">"HTTP ప్రాక్సీని బ్రౌజరే ఉపయోగిస్తుంది, ఇతర అనువర్తనాల ఉపయోగించకపోవచ్చు."</string>
+ <string name="proxy_warning_limited_support" msgid="9026539134219095768">"బ్రౌజర్, HTTP ప్రాక్సీని ఉపయోగిస్తుంది కానీ ఇతర యాప్లు ఉపయోగించకపోవచ్చు."</string>
<string name="proxy_url_title" msgid="882042361706435904">"PAC URL: "</string>
<string name="radio_info_dl_kbps" msgid="2903778264453410272">"DL బ్యాండ్విడ్త్ (kbps):"</string>
<string name="radio_info_ul_kbps" msgid="3802245899811732716">"UL బ్యాండ్విడ్త్ (kbps):"</string>
@@ -353,7 +353,7 @@
<string name="show_owner_info_on_lockscreen_label" msgid="4510756693837171575">"లాక్ స్క్రీన్లో యజమాని సమాచారాన్ని చూపు"</string>
<string name="owner_info_settings_title" msgid="2537966178998339896">"లాక్ స్క్రీన్ సందేశం"</string>
<string name="security_enable_widgets_title" msgid="1701510007926738088">"విడ్జెట్లను ప్రారంభించు"</string>
- <string name="security_enable_widgets_disabled_summary" msgid="4408176087132339331">"నిర్వాహకులు నిలిపివేసారు"</string>
+ <string name="security_enable_widgets_disabled_summary" msgid="4408176087132339331">"అడ్మిన్ డిజేబుల్ చేశారు"</string>
<string name="lockdown_settings_title" msgid="4534779922580115990">"అన్నీ లాక్ చేయి ఎంపికను చూపు"</string>
<string name="lockdown_settings_summary" msgid="7270756909878256174">"Smart Lock, వేలిముద్ర అన్లాకింగ్ మరియు లాక్ స్క్రీన్లో నోటిఫికేషన్లను ఆఫ్ చేసే పవర్ బటన్ ఎంపికను ప్రదర్శించు"</string>
<string name="trust_agents_extend_unlock_title" msgid="3582017561316089951">"విశ్వసనీయ ఏజెంట్లు మాత్రమే అన్లాక్ను పొడిగిస్తాయి"</string>
@@ -387,7 +387,7 @@
<string name="security_settings_summary" msgid="5210109100643223686">"నా స్థానాన్ని, స్క్రీన్ అన్లాక్ను, సిమ్ కార్డు లాక్ను, ఆధారాల నిల్వ లాక్ను సెట్ చేయి"</string>
<string name="cdma_security_settings_summary" msgid="1783066617800041869">"నా స్థానాన్ని, స్క్రీన్ అన్లాక్ను, ఆధారాల నిల్వ లాక్ను సెట్ చేయండి"</string>
<string name="security_passwords_title" msgid="6853942836045862315">"గోప్యత"</string>
- <string name="disabled_by_administrator_summary" msgid="6099821045360491127">"నిర్వాహకులు నిలిపివేసారు"</string>
+ <string name="disabled_by_administrator_summary" msgid="6099821045360491127">"అడ్మిన్ డిజేబుల్ చేశారు"</string>
<string name="security_status_title" msgid="1261960357751754428">"భద్రత స్థితి"</string>
<string name="security_dashboard_summary_face" msgid="2536136110153593745">"స్క్రీన్ లాక్, ముఖం అన్లాక్"</string>
<string name="security_dashboard_summary" msgid="4048877125766167227">"స్క్రీన్ లాక్, వేలిముద్ర"</string>
@@ -918,7 +918,7 @@
<string name="please_select_phase2" msgid="5848080896810435677">"2వ దశ ప్రామాణీకరణ"</string>
<string name="wifi_eap_ca_cert" msgid="1496395241849383785">"CA సర్టిఫికెట్"</string>
<string name="wifi_eap_domain" msgid="3298302320003640130">"డొమైన్"</string>
- <string name="wifi_eap_user_cert" msgid="6786839531765719173">"వినియోగదారు సర్టిఫికెట్"</string>
+ <string name="wifi_eap_user_cert" msgid="6786839531765719173">"యూజర్ సర్టిఫికెట్"</string>
<string name="wifi_eap_identity" msgid="5280457017705738773">"గుర్తింపు"</string>
<string name="wifi_eap_anonymous" msgid="6352344972490839958">"అనామక గుర్తింపు"</string>
<string name="wifi_password" msgid="6942983531275177771">"పాస్వర్డ్"</string>
@@ -1039,7 +1039,7 @@
<string name="wifi_dns1" msgid="5250809981658822505">"DNS 1"</string>
<string name="wifi_dns2" msgid="1905876166783761641">"DNS 2"</string>
<string name="wifi_gateway" msgid="7455334454444443397">"గేట్వే"</string>
- <string name="wifi_network_prefix_length" msgid="1941206966133010633">"నెట్వర్క్ ఆదిప్రత్యయం పొడవు"</string>
+ <string name="wifi_network_prefix_length" msgid="1941206966133010633">"నెట్వర్క్ ప్రిఫిక్స్ పొడవు"</string>
<string name="wifi_p2p_settings_title" msgid="3213180637906683308">"Wi‑Fi Direct"</string>
<string name="wifi_p2p_device_info" msgid="4717490498956029237">"పరికర సమాచారం"</string>
<string name="wifi_p2p_persist_network" msgid="1110453878886476660">"ఈ కనెక్షన్ను గుర్తుంచుకో"</string>
@@ -1800,7 +1800,7 @@
<string name="advanced_settings_summary" msgid="5912237062506771716">"మరిన్ని సెట్టింగ్ల ఎంపికలను ప్రారంభించు"</string>
<string name="application_info_label" msgid="3886253474964599105">"యాప్ సమాచారం"</string>
<string name="storage_label" msgid="1109537840103290384">"నిల్వ"</string>
- <string name="auto_launch_label" msgid="47089737922907379">"డిఫాల్ట్గా తెరువు"</string>
+ <string name="auto_launch_label" msgid="47089737922907379">"ఆటోమేటిక్గా తెరువు"</string>
<string name="auto_launch_label_generic" msgid="7865828543459493308">"డిఫాల్ట్లు"</string>
<string name="screen_compatibility_label" msgid="3638271673726075815">"స్క్రీన్ అనుకూలత"</string>
<string name="permissions_label" msgid="7341733648403464213">"అనుమతులు"</string>
@@ -2086,7 +2086,7 @@
<string name="accessibility_content_timeout_preference_summary" msgid="853829064617918179">"మీరు చదవాల్సిన సందేశాలను స్క్రీన్పై తాత్కాలికంగా ఎంతసేపు చూపాలనేది ఎంచుకోవచ్చు.\n\nఈ సెట్టింగ్కు అన్ని యాప్లలో మద్దతు ఉండదు."</string>
<string name="accessibility_control_timeout_preference_summary" msgid="8582212299606932160">"మిమ్మల్ని ఏదో ఒక చర్యని తీసుకోమంటూ, తాత్కాలికంగా స్క్రీన్పై కనిపించే సందేశాలు ఎంతసేపు అలాగే ఉండాలనేది ఎంచుకోవచ్చు.\n\nఈ సెట్టింగ్కు అన్ని యాప్లలో మద్దతు ఉండదు."</string>
<string name="accessibility_long_press_timeout_preference_title" msgid="5029685114164868477">"తాకి ఉంచాల్సిన సమయం"</string>
- <string name="accessibility_display_inversion_preference_title" msgid="3852635518618938998">"వర్ణ విలోమం"</string>
+ <string name="accessibility_display_inversion_preference_title" msgid="3852635518618938998">"కలర్ మార్పిడి"</string>
<string name="accessibility_display_inversion_preference_subtitle" msgid="69291255322175323">"పనితీరుపై ప్రభావం చూపవచ్చు"</string>
<string name="accessibility_autoclick_preference_title" msgid="9164599088410340405">"డ్వెల్ టైమింగ్"</string>
<string name="accessibility_autoclick_description" msgid="5492414927846407499">"మీరు మౌస్ని ఉపయోగిస్తున్నట్లయితే, కర్సర్ నిర్దిష్ట సమయం పాటు కదలడం ఆగిపోయినప్పుడు అది ఆటోమేటిక్గా చర్య తీసుకునే విధంగా దానిని సెట్ చేయండి."</string>
@@ -2882,7 +2882,7 @@
<string name="user_cannot_add_accounts_message" msgid="5993561303748749097">"పరిమిత ప్రొఫైల్లు ఖాతాలను జోడించడం సాధ్యపడదు"</string>
<string name="user_remove_user_menu" msgid="3505139157217459864">"ఈ పరికరం నుండి <xliff:g id="USER_NAME">%1$s</xliff:g>ని తొలగించు"</string>
<string name="user_lockscreen_settings" msgid="3820813814848394568">"లాక్ స్క్రీన్ సెట్టింగ్లు"</string>
- <string name="user_add_on_lockscreen_menu" msgid="5211604808199585774">"లాక్ స్క్రీన్ నుండి వినియోగదారులను జోడించండి"</string>
+ <string name="user_add_on_lockscreen_menu" msgid="5211604808199585774">"లాక్ స్క్రీన్ నుండి యూజర్లను జోడించండి"</string>
<string name="user_new_user_name" msgid="3880395219777884838">"కొత్త వినియోగదారు"</string>
<string name="user_new_profile_name" msgid="3074939718101489937">"కొత్త ప్రొఫైల్"</string>
<string name="user_confirm_remove_self_title" msgid="6739480453680217543">"మిమ్మల్ని తొలగించాలా?"</string>
@@ -3590,7 +3590,7 @@
<string name="imei_information_title" msgid="7666097743700170757">"IMEI సమాచారం"</string>
<string name="imei_information_summary" msgid="716516316022275083">"IMEI సంబంధిత సమాచారం"</string>
<string name="slot_number" msgid="785422579177068698">"(స్లాట్<xliff:g id="SLOT_NUM">%1$d</xliff:g>)"</string>
- <string name="launch_by_default" msgid="6106985160202769725">"డిఫాల్ట్గా తెరువు"</string>
+ <string name="launch_by_default" msgid="6106985160202769725">"ఆటోమేటిక్గా తెరువు"</string>
<string name="app_launch_domain_links_title" msgid="2987289657348349133">"లింక్లను తెరవడం"</string>
<string name="app_launch_open_domain_urls_title" msgid="8595126859922391331">"మద్దతిచ్చే లింక్లను తెరవండి"</string>
<string name="app_launch_open_domain_urls_summary" msgid="6803029846855502366">"అడగకుండానే తెరవాలి"</string>
@@ -4475,7 +4475,7 @@
<string name="privacy_dashboard_title" msgid="8764930992456607513">"గోప్యత"</string>
<string name="privacy_dashboard_summary" msgid="7916431309860824945">"అనుమతులు, ఖాతా కార్యకలాపం, వ్యక్తిగత డేటా"</string>
<string name="contextual_card_dismiss_remove" msgid="1750420285615827309">"తీసివేయి"</string>
- <string name="contextual_card_dismiss_keep" msgid="3204450672928193661">"ఉంచండి"</string>
+ <string name="contextual_card_dismiss_keep" msgid="3204450672928193661">"Keep"</string>
<string name="contextual_card_dismiss_confirm_message" msgid="2352465079667730312">"ఈ సూచనని తీసేయాలా?"</string>
<string name="contextual_card_removed_message" msgid="4047307820743366876">"సూచన తీసివేయబడింది"</string>
<string name="contextual_card_undo_dismissal_text" msgid="5009245286931852012">"చర్యరద్దు"</string>
diff --git a/tests/CarDeveloperOptions/res/values-th/strings.xml b/tests/CarDeveloperOptions/res/values-th/strings.xml
index 6d94b4a..84368da 100644
--- a/tests/CarDeveloperOptions/res/values-th/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-th/strings.xml
@@ -355,7 +355,7 @@
<string name="security_enable_widgets_title" msgid="1701510007926738088">"เปิดใช้งานวิดเจ็ต"</string>
<string name="security_enable_widgets_disabled_summary" msgid="4408176087132339331">"ปิดใช้โดยผู้ดูแลระบบ"</string>
<string name="lockdown_settings_title" msgid="4534779922580115990">"แสดงตัวเลือกการปิดล็อก"</string>
- <string name="lockdown_settings_summary" msgid="7270756909878256174">"แสดงตัวเลือกปุ่มเปิด/ปิดที่จะปิด Smart Lock การปลดล็อกด้วยลายนิ้วมือ และการแจ้งเตือนในหน้าจอล็อก"</string>
+ <string name="lockdown_settings_summary" msgid="7270756909878256174">"แสดงตัวเลือกปุ่มเปิด/ปิดที่จะปิด Smart Lock, การปลดล็อกด้วยลายนิ้วมือ และการแจ้งเตือนในหน้าจอล็อก"</string>
<string name="trust_agents_extend_unlock_title" msgid="3582017561316089951">"เอเจนต์ความน่าเชื่อถือขยายเฉพาะการปลดล็อก"</string>
<string name="trust_agents_extend_unlock_summary" msgid="3543997596586078084">"หากเปิดใช้ เอเจนต์ความน่าเชื่อถือจะปลดล็อกอุปกรณ์ค้างไว้นานขึ้น แต่จะปลดล็อกอุปกรณ์ที่ล็อกอยู่ไม่ได้อีกต่อไป"</string>
<string name="trust_lost_locks_screen_title" msgid="3094736590690459372">"หน้าจอล็อกเมื่อสภาพแวดล้อมไม่น่าเชื่อถือ"</string>
@@ -914,7 +914,7 @@
<string name="wifi_ip_address" msgid="5572539114989914831">"ที่อยู่ IP"</string>
<string name="passpoint_label" msgid="7429247462404128615">"บันทึกผ่านทาง"</string>
<string name="passpoint_content" msgid="340527524510304327">"ข้อมูลรับรองของ <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="wifi_eap_method" msgid="3752116941487485859">"วิธีการ EAP"</string>
+ <string name="wifi_eap_method" msgid="3752116941487485859">"เมธอด EAP"</string>
<string name="please_select_phase2" msgid="5848080896810435677">"การตรวจสอบสิทธิ์เฟส 2"</string>
<string name="wifi_eap_ca_cert" msgid="1496395241849383785">"ใบรับรอง CA"</string>
<string name="wifi_eap_domain" msgid="3298302320003640130">"โดเมน"</string>
@@ -935,10 +935,10 @@
<string name="wifi_privacy_settings" msgid="4462092795794247809">"ความเป็นส่วนตัว"</string>
<string name="wifi_privacy_settings_ephemeral_summary" msgid="2411375348287064283">"MAC แบบสุ่ม"</string>
<string name="wifi_dpp_add_device_to_network" msgid="8871041525483253430">"เพิ่มอุปกรณ์"</string>
- <string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"ถือให้โค้ด QR อยู่กลางช่องด้านล่างเพื่อเพิ่มอุปกรณ์ไปยัง “<xliff:g id="SSID">%1$s</xliff:g>”"</string>
+ <string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"ให้คิวอาร์โค้ดอยู่กลางช่องด้านล่างเพื่อเพิ่มอุปกรณ์ไปยัง “<xliff:g id="SSID">%1$s</xliff:g>”"</string>
<string name="wifi_dpp_scan_qr_code" msgid="6021600592661235546">"สแกนคิวอาร์โค้ด"</string>
- <string name="wifi_dpp_scan_qr_code_join_network" msgid="3085162928804379545">"ถือให้โค้ด QR อยู่กลางช่องด้านล่างเพื่อเชื่อมต่อไปยัง “<xliff:g id="SSID">%1$s</xliff:g>”"</string>
- <string name="wifi_dpp_scan_qr_code_join_unknown_network" msgid="5682308317067290738">"เข้าร่วม Wi‑Fi โดยการสแกนคิวอาร์โค้ด"</string>
+ <string name="wifi_dpp_scan_qr_code_join_network" msgid="3085162928804379545">"ให้คิวอาร์โค้ดอยู่กลางช่องด้านล่างเพื่อเชื่อมต่อไปยัง “<xliff:g id="SSID">%1$s</xliff:g>”"</string>
+ <string name="wifi_dpp_scan_qr_code_join_unknown_network" msgid="5682308317067290738">"ร่วมใช้ Wi‑Fi โดยการสแกนคิวอาร์โค้ด"</string>
<string name="wifi_dpp_share_wifi" msgid="1724161216219646284">"แชร์ Wi‑Fi"</string>
<string name="wifi_dpp_scan_qr_code_with_another_device" msgid="4357387474444884759">"สแกนคิวอาร์โค้ดนี้เพื่อเชื่อมต่อกับ “<xliff:g id="SSID">%1$s</xliff:g>” และแชร์รหัสผ่าน"</string>
<string name="wifi_dpp_scan_open_network_qr_code_with_another_device" msgid="572011882416511818">"สแกนคิวอาร์โค้ดนี้เพื่อเชื่อมต่อกับ “<xliff:g id="SSID">%1$s</xliff:g>”"</string>
@@ -1337,7 +1337,7 @@
<string name="status_number_sim_slot" product="tablet" msgid="4518232285651165459">"MDN (ช่องซิม %1$d)"</string>
<string name="status_number_sim_slot" product="default" msgid="3660851494421332328">"หมายเลขโทรศัพท์ (ช่องซิม %1$d)"</string>
<string name="status_number_sim_status" product="tablet" msgid="8069693515860290952">"MDN ในซิม"</string>
- <string name="status_number_sim_status" product="default" msgid="6602562692270457610">"หมายเลขโทรศัพท์ในซิม"</string>
+ <string name="status_number_sim_status" product="default" msgid="6602562692270457610">"หมายเลขโทรศัพท์ของซิม"</string>
<string name="status_min_number" msgid="8346889546673707777">"นาที"</string>
<string name="status_msid_number" msgid="7808175928664357661">"MSID"</string>
<string name="status_prl_version" msgid="5634561205739199042">"รุ่น PRL"</string>
@@ -1656,7 +1656,7 @@
</plurals>
<string name="location_category_recent_location_access" msgid="286059523360285026">"การเข้าถึงตำแหน่งล่าสุด"</string>
<string name="location_recent_location_access_view_details" msgid="2051602261436245905">"ดูรายละเอียด"</string>
- <string name="location_no_recent_apps" msgid="77502059586413278">"ไม่มีแอปใดทำการขอตำแหน่งเมื่อเร็วๆ นี้"</string>
+ <string name="location_no_recent_apps" msgid="77502059586413278">"ไม่มีแอปใดขอตำแหน่งเมื่อเร็วๆ นี้"</string>
<string name="location_no_recent_accesses" msgid="6289916310397279890">"ไม่มีแอปที่เข้าถึงตำแหน่งเมื่อเร็วๆ นี้"</string>
<string name="location_high_battery_use" msgid="7177199869979522663">"ใช้แบตเตอรี่มาก"</string>
<string name="location_low_battery_use" msgid="5030448574501435888">"ใช้แบตเตอรี่น้อย"</string>
@@ -2195,8 +2195,8 @@
<string name="print_settings" msgid="7886184656544483072">"การพิมพ์"</string>
<string name="print_settings_summary_no_service" msgid="634173687975841526">"ปิด"</string>
<plurals name="print_settings_summary" formatted="false" msgid="7580293760281445137">
- <item quantity="other">บริการการพิมพ์เปิดอยู่ <xliff:g id="COUNT">%1$d</xliff:g> รายการ</item>
- <item quantity="one">บริการการพิมพ์เปิดอยู่ 1 รายการ</item>
+ <item quantity="other">บริการพิมพ์เปิดอยู่ <xliff:g id="COUNT">%1$d</xliff:g> รายการ</item>
+ <item quantity="one">บริการพิมพ์เปิดอยู่ 1 รายการ</item>
</plurals>
<plurals name="print_jobs_summary" formatted="false" msgid="6180308415569432845">
<item quantity="other">งานพิมพ์ <xliff:g id="COUNT">%1$d</xliff:g> รายการ</item>
@@ -2455,7 +2455,7 @@
<string name="battery_saver_auto_percentage_summary" msgid="2036128588460338677">"จะเปิดเมื่อเหลือแบตเตอรี่ <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
<string name="battery_saver_schedule_settings_title" msgid="574233428557678128">"ตั้งกำหนดการ"</string>
<string name="battery_saver_sticky_title_new" msgid="5328707297110866082">"ปิดเมื่อชาร์จเต็มแล้ว"</string>
- <string name="battery_saver_sticky_description_new" product="default" msgid="3406582427270935879">"โหมดประหยัดแบตเตอรี่จะปิดเมื่อแบตเตอรี่โทรศัพท์อยู่ที่ <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
+ <string name="battery_saver_sticky_description_new" product="default" msgid="3406582427270935879">"โหมดประหยัดแบตเตอรี่จะปิดเมื่อมีแบตเตอรี่โทรศัพท์อยู่ที่ <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
<string name="battery_saver_sticky_description_new" product="tablet" msgid="3284967694001857194">"โหมดประหยัดแบตเตอรี่จะปิดเมื่อแบตเตอรี่แท็บเล็ตอยู่ที่ <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
<string name="battery_saver_sticky_description_new" product="device" msgid="5056520668081504111">"โหมดประหยัดแบตเตอรี่จะปิดเมื่อแบตเตอรี่อุปกรณ์อยู่ที่ <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
<!-- no translation found for battery_saver_seekbar_title (7607123201469333645) -->
diff --git a/tests/CarDeveloperOptions/res/values-tr/arrays.xml b/tests/CarDeveloperOptions/res/values-tr/arrays.xml
index 39167de..6b1d63c 100644
--- a/tests/CarDeveloperOptions/res/values-tr/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-tr/arrays.xml
@@ -473,8 +473,8 @@
</string-array>
<string-array name="wifi_metered_entries">
<item msgid="4329206416008519163">"Otomatik olarak algıla"</item>
- <item msgid="773943026484148895">"Sınırlı olarak ele al"</item>
- <item msgid="1008268820118852416">"Sınırsız olarak ele al"</item>
+ <item msgid="773943026484148895">"Sınırlı gibi kullan"</item>
+ <item msgid="1008268820118852416">"Sınırsız gibi kullan"</item>
</string-array>
<string-array name="wifi_privacy_entries">
<item msgid="6545683814310036454">"Rastgele MAC kullan (varsayılan)"</item>
diff --git a/tests/CarDeveloperOptions/res/values-tr/strings.xml b/tests/CarDeveloperOptions/res/values-tr/strings.xml
index d011f0a..1a96948 100644
--- a/tests/CarDeveloperOptions/res/values-tr/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-tr/strings.xml
@@ -2452,7 +2452,7 @@
<string name="battery_saver_auto_routine" msgid="886514412067906980">"Rutininize göre"</string>
<string name="battery_saver_auto_percentage" msgid="5791982309331921556">"Yüzdeye göre"</string>
<string name="battery_saver_auto_routine_summary" msgid="9182044424547482889">"Piliniz, genellikle şarj ettiğiniz saatten önce bitecek gibiyse Pil Tasarrufu etkinleştirilir"</string>
- <string name="battery_saver_auto_percentage_summary" msgid="2036128588460338677">"<xliff:g id="PERCENT">%1$s</xliff:g> düzeyinde açılacak"</string>
+ <string name="battery_saver_auto_percentage_summary" msgid="2036128588460338677">"Pil <xliff:g id="PERCENT">%1$s</xliff:g> olduğunda açılacak"</string>
<string name="battery_saver_schedule_settings_title" msgid="574233428557678128">"Bir plan belirleyin"</string>
<string name="battery_saver_sticky_title_new" msgid="5328707297110866082">"Tam olarak şarj edildiğinde kapat"</string>
<string name="battery_saver_sticky_description_new" product="default" msgid="3406582427270935879">"Pil Tasarrufu, telefonunuzun gücü <xliff:g id="PERCENT">%1$s</xliff:g> olduğunda kapanır"</string>
@@ -3711,7 +3711,7 @@
<string name="high_power_off" msgid="5906679734326490426">"Pil kullanımı optimize ediliyor"</string>
<string name="high_power_system" msgid="739584574711292753">"Pil optimizasyonu kullanılamıyor"</string>
<string name="high_power_desc" msgid="333756885680362741">"Pil optimizasyonu uygulanmasın. Bu seçenek, pilinizi daha hızlı tüketebilir."</string>
- <string name="high_power_prompt_title" msgid="2805745781720454052">"Uygulamanın arka planda çalışmaya devam etsin mi?"</string>
+ <string name="high_power_prompt_title" msgid="2805745781720454052">"Uygulama arka planda çalışmaya devam etsin mi?"</string>
<string name="high_power_prompt_body" msgid="8067395096053552289">"<xliff:g id="APP_NAME">%1$s</xliff:g> uygulamasının her zaman arka planda çalıştırılmasına izin vermeniz pil ömrünü kısaltabilir. \n\nBunu daha sonra Ayarlar > Uygulamalar ve bildirimler seçeneğinden değiştirebilirsiniz."</string>
<string name="battery_summary" msgid="4345690800899981339">"Son kez tamamen şarj olduktan sonra <xliff:g id="PERCENTAGE">%1$s</xliff:g> kullanıldı"</string>
<string name="battery_power_management" msgid="2853925857548647969">"Güç yönetimi"</string>
diff --git a/tests/CarDeveloperOptions/res/values-ur/strings.xml b/tests/CarDeveloperOptions/res/values-ur/strings.xml
index b5613d3..7afdece 100644
--- a/tests/CarDeveloperOptions/res/values-ur/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-ur/strings.xml
@@ -207,7 +207,7 @@
<string name="proxy_error_empty_port" msgid="8034561724923076215">"آپ کو پورٹ فیلڈ مکمل کرنے کی ضرورت ہے۔"</string>
<string name="proxy_error_empty_host_set_port" msgid="8471455809508588255">"اگر میزبان فیلڈ خالی ہے تو پورٹ فیلڈ لازمی طور پر خالی ہونی چاہیے۔"</string>
<string name="proxy_error_invalid_port" msgid="4046559920586100637">"آپ کے ذریعے ٹائپ کردہ پورٹ درست نہیں ہے۔"</string>
- <string name="proxy_warning_limited_support" msgid="9026539134219095768">"HTTP پراکسی کا استعمال براؤزر کے ذریعے ہوتا ہے لیکن ممکن ہے دوسری ایپس اسے استعمال نہ کریں۔"</string>
+ <string name="proxy_warning_limited_support" msgid="9026539134219095768">"براؤزر HTTP پراکسی کا استعمال کرتا ہے لیکن ممکن ہے دوسری ایپس اسے استعمال نہ کریں۔"</string>
<string name="proxy_url_title" msgid="882042361706435904">"PAC URL: "</string>
<string name="radio_info_dl_kbps" msgid="2903778264453410272">"DL بینڈ وڈتھ (kbps):"</string>
<string name="radio_info_ul_kbps" msgid="3802245899811732716">"UL بینڈ وڈتھ (kbps):"</string>
@@ -910,7 +910,7 @@
<string name="wifi_status" msgid="3439931558930689940">"اسٹیٹس"</string>
<string name="tx_wifi_speed" msgid="2571810085003261073">"ترسیل کے لنک کی رفتار"</string>
<string name="rx_wifi_speed" msgid="7392873246110937187">"وصولی کے لنک کی رفتار"</string>
- <string name="wifi_frequency" msgid="6132852924995724246">"تعدد"</string>
+ <string name="wifi_frequency" msgid="6132852924995724246">"فریکوئنسی"</string>
<string name="wifi_ip_address" msgid="5572539114989914831">"IP پتہ"</string>
<string name="passpoint_label" msgid="7429247462404128615">"محفوظ کردہ بذریعہ"</string>
<string name="passpoint_content" msgid="340527524510304327">"<xliff:g id="NAME">%1$s</xliff:g> اسنادات"</string>
@@ -1689,7 +1689,7 @@
<string name="contributors_title" msgid="6800028420806884340">"معاونین"</string>
<string name="manual" msgid="5431859421432581357">"مینوئل"</string>
<string name="regulatory_labels" msgid="380968489247381025">"ریگولیٹری لیبلز"</string>
- <string name="safety_and_regulatory_info" msgid="7113766428000920132">"حفاظتی اور انضباطی مینوئل"</string>
+ <string name="safety_and_regulatory_info" msgid="7113766428000920132">"حفاظتی اور ریگولیٹری مینوئل"</string>
<string name="copyright_title" msgid="3847703367689932190">"کاپی رائٹ"</string>
<string name="license_title" msgid="7582145947873528540">"لائسنس"</string>
<string name="terms_title" msgid="1804549588198223771">"شرائط و ضوابط"</string>
@@ -2037,7 +2037,7 @@
<string name="accessibility_settings" msgid="9140621093888234485">"ایکسیسبیلٹی"</string>
<string name="accessibility_settings_title" msgid="1687226556576913576">"ایکسیسبیلٹی ترتیبات"</string>
<string name="accessibility_settings_summary" msgid="5742379519336396561">"اسکرین قارئین، ڈسپلے، تعامل کے کنٹرولز"</string>
- <string name="vision_settings_title" msgid="7315352351051423944">"بصارتی ترتیبات"</string>
+ <string name="vision_settings_title" msgid="7315352351051423944">"بصری ترتیبات"</string>
<string name="vision_settings_description" msgid="3476589459009287332">"آپ اس آلہ کو اپنی ضروریات کے مطابق حسب ضرورت بنا سکتے ہیں۔ یہ ایکسیسبیلٹی خصوصیات بعد میں ترتیبات میں تبدیل ہو سکتی ہیں۔"</string>
<string name="vision_settings_suggestion_title" msgid="7268661419110951128">"فونٹ سائز تبدیل کریں"</string>
<string name="screen_reader_category_title" msgid="6300714148519645544">"اسکرین ریڈرز"</string>
diff --git a/tests/CarDeveloperOptions/res/values-uz/arrays.xml b/tests/CarDeveloperOptions/res/values-uz/arrays.xml
index 8c3e21c..818d6eb 100644
--- a/tests/CarDeveloperOptions/res/values-uz/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-uz/arrays.xml
@@ -257,7 +257,7 @@
<item msgid="5420704980305018295">"ovoz balandligi"</item>
<item msgid="5797363115508970204">"jiringlash tovushi"</item>
<item msgid="8233154098550715999">"multimedia tovushi"</item>
- <item msgid="5196715605078153950">"signal tovushi"</item>
+ <item msgid="5196715605078153950">"signal balandligi"</item>
<item msgid="394030698764284577">"xabarnoma tovush balandligi"</item>
<item msgid="8952898972491680178">"bluetooth tovush balandligi"</item>
<item msgid="8506227454543690851">"uyg‘oq turish"</item>
@@ -324,7 +324,7 @@
<item msgid="1600379420669104929">"Ovoz balandligi"</item>
<item msgid="6296768210470214866">"Jiringlash tovushi"</item>
<item msgid="510690696071629241">"Multimedia tovushi"</item>
- <item msgid="406861638631430109">"Signal tovushi"</item>
+ <item msgid="406861638631430109">"Signal balandligi"</item>
<item msgid="4715864795872233884">"Bildirishnomalar ovozi"</item>
<item msgid="2311478519251301183">"Bluetooth tovush balandligi"</item>
<item msgid="5133991377896747027">"Uyg‘oq turish"</item>
diff --git a/tests/CarDeveloperOptions/res/values-uz/strings.xml b/tests/CarDeveloperOptions/res/values-uz/strings.xml
index 0db1cc6..50a9174 100644
--- a/tests/CarDeveloperOptions/res/values-uz/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-uz/strings.xml
@@ -544,7 +544,7 @@
<string name="suggested_fingerprint_lock_settings_summary" product="device" msgid="8114514312665251311"></string>
<string name="suggested_fingerprint_lock_settings_summary" product="default" msgid="8114514312665251311"></string>
<string name="lock_settings_picker_title" msgid="1034741644461982205">"Ekran qulfini tanlang"</string>
- <string name="lock_settings_picker_title_profile" msgid="5086594364428782115">"Ishchi profil qulfini tanlang"</string>
+ <string name="lock_settings_picker_title_profile" msgid="5086594364428782115">"Ish profili qulfini tanlang"</string>
<string name="setup_lock_settings_picker_title" product="tablet" msgid="2429667472335773519">"Planshetingizni himoyalang"</string>
<string name="setup_lock_settings_picker_title" product="device" msgid="4739290104106645233">"Qurilmangizni himoyalang"</string>
<string name="setup_lock_settings_picker_title" product="default" msgid="3911582328576859628">"Telefoningizni himoyalang"</string>
@@ -559,7 +559,7 @@
<string name="unlock_set_unlock_launch_picker_title" msgid="2731152716948003853">"Ekran qulfi"</string>
<string name="unlock_set_unlock_launch_picker_summary_lock_immediately" msgid="5596186270725220642">"<xliff:g id="UNLOCK_METHOD">%1$s</xliff:g> / uyqu rejimidan keyinoq"</string>
<string name="unlock_set_unlock_launch_picker_summary_lock_after_timeout" msgid="3861167251234952373">"<xliff:g id="UNLOCK_METHOD">%1$s</xliff:g> / uyqu rejimidan <xliff:g id="TIMEOUT_STRING">%2$s</xliff:g>dan keyin"</string>
- <string name="unlock_set_unlock_launch_picker_title_profile" msgid="7976345264630422921">"Ishchi profil qulfi"</string>
+ <string name="unlock_set_unlock_launch_picker_title_profile" msgid="7976345264630422921">"Ish profili qulfi"</string>
<string name="unlock_set_unlock_launch_picker_change_title" msgid="32310692507029407">"Ekran qulfini o‘zgartirish"</string>
<string name="unlock_set_unlock_launch_picker_change_summary" msgid="2072792784866320522">"Grafik kalit, PIN kod va himoya parolini o‘zgartirish yoki o‘chirib qo‘yish"</string>
<string name="unlock_set_unlock_launch_picker_enable_summary" msgid="9070847611379078795">"Ekranni qulflash usulini tanlang"</string>
@@ -643,12 +643,12 @@
<string name="lock_last_pattern_attempt_before_wipe_user" msgid="5194192938934564218">"Agar grafik kalitni xato kiritsangiz, bu foydalanuvchi o‘chirib tashlanadi"</string>
<string name="lock_last_pin_attempt_before_wipe_user" msgid="7833852187363499906">"Agar PIN kodni xato kiritsangiz, bu foydalanuvchi o‘chirib tashlanadi"</string>
<string name="lock_last_password_attempt_before_wipe_user" msgid="8979742220140001204">"Agar parolni xato kiritsangiz, bu foydalanuvchi o‘chirib tashlanadi"</string>
- <string name="lock_last_pattern_attempt_before_wipe_profile" msgid="3877613047631174576">"Agar grafik kalitni xato kiritsangiz, ishchi profil va undagi ma’lumotlar o‘chirib tashlanadi"</string>
- <string name="lock_last_pin_attempt_before_wipe_profile" msgid="8132438288175428168">"Agar PIN kodni xato kiritsangiz, ishchi profil va undagi ma’lumotlar o‘chirib tashlanadi"</string>
- <string name="lock_last_password_attempt_before_wipe_profile" msgid="1535128774464384305">"Agar parolni xato kiritsangiz, ishchi profil va undagi ma’lumotlar o‘chirib tashlanadi"</string>
+ <string name="lock_last_pattern_attempt_before_wipe_profile" msgid="3877613047631174576">"Agar grafik kalitni xato kiritsangiz, ish profili va undagi ma’lumotlar o‘chirib tashlanadi"</string>
+ <string name="lock_last_pin_attempt_before_wipe_profile" msgid="8132438288175428168">"Agar PIN kodni xato kiritsangiz, ish profili va undagi ma’lumotlar o‘chirib tashlanadi"</string>
+ <string name="lock_last_password_attempt_before_wipe_profile" msgid="1535128774464384305">"Agar parolni xato kiritsangiz, ish profili va undagi ma’lumotlar o‘chirib tashlanadi"</string>
<string name="lock_failed_attempts_now_wiping_device" msgid="8662360098784762828">"Juda ko‘p marta muvaffaqiyatsiz urinishlar amalga oshirildi. Bu qurilmadagi ma’lumotlar o‘chirib tashlanadi."</string>
<string name="lock_failed_attempts_now_wiping_user" msgid="3793513796171561873">"Juda ko‘p marta muvaffaqiyatsiz urinishlar amalga oshirildi. Bu foydalanuvchi o‘chirib tashlanadi."</string>
- <string name="lock_failed_attempts_now_wiping_profile" msgid="5347108525299038285">"Juda ko‘p marta muvaffaqiyatsiz urinishlar amalga oshirildi. Bu ishchi profil va undagi ma’lumotlar o‘chirib tashlanadi."</string>
+ <string name="lock_failed_attempts_now_wiping_profile" msgid="5347108525299038285">"Juda ko‘p marta muvaffaqiyatsiz urinishlar amalga oshirildi. Bu ish profili va undagi ma’lumotlar o‘chirib tashlanadi."</string>
<string name="lock_failed_attempts_now_wiping_dialog_dismiss" msgid="3950582268749037318">"Yopish"</string>
<plurals name="lockpassword_password_too_short" formatted="false" msgid="694091983183310827">
<item quantity="other">Kamida <xliff:g id="COUNT_1">%d</xliff:g> ta belgi</item>
@@ -1164,7 +1164,7 @@
<string name="dock_sounds_enable_summary_off" product="tablet" msgid="2125391395745266946">"Planshetni dokga ulash yoki dokdan chiqarish paytida ovoz yangramasin"</string>
<string name="dock_sounds_enable_summary_off" product="default" msgid="9075438702849896866">"Telefonni dokka ulash yoki dokdan uzish paytida ovoz chiqarilmasin"</string>
<string name="account_settings" msgid="1937600532993930396">"Hisoblar"</string>
- <string name="accessibility_category_work" msgid="2808942060489460727">"Ishchi profil hisoblari – <xliff:g id="MANAGED_BY">%s</xliff:g>"</string>
+ <string name="accessibility_category_work" msgid="2808942060489460727">"Ish profili hisoblari – <xliff:g id="MANAGED_BY">%s</xliff:g>"</string>
<string name="accessibility_category_personal" msgid="1423427301759058762">"Shaxsiy profil hisoblari"</string>
<string name="accessibility_work_account_title" msgid="3195468574776888011">"Ishchi hisob – <xliff:g id="MANAGED_BY">%s</xliff:g>"</string>
<string name="accessibility_personal_account_title" msgid="7251761883688839354">"Shaxsiy hisob – <xliff:g id="MANAGED_BY">%s</xliff:g>"</string>
@@ -1602,7 +1602,7 @@
<string name="master_clear_button_text" product="default" msgid="8000547818499182920">"Hamma narsani tozalash"</string>
<string name="master_clear_final_desc" msgid="5189365498015339294">"Barcha shaxsiy maʼlumotlaringiz va yuklab olingan ilovalar tozalab tashlanadi. Bu amalni ortga qaytara olmaysiz."</string>
<string name="master_clear_final_desc_esim" msgid="3058919823436953662">"Barcha shaxsiy maʼlumotlaringiz, jumladan, yuklab olingan ilovalar va SIM kartalar axboroti tozalab tashlanadi. Bu amalni ortga qaytara olmaysiz."</string>
- <string name="master_clear_final_button_text" msgid="866772743886027768">"Barchasini o‘chirish"</string>
+ <string name="master_clear_final_button_text" msgid="866772743886027768">"Hammasini tozalash"</string>
<string name="master_clear_failed" msgid="7588397453984229892">"Dastlabki sozlamalarni qaytarib bo\'lmadi, chunki Tizimni tozalash xizmati javob bermayapti."</string>
<string name="master_clear_confirm_title" msgid="698328669893512402">"Hamma narsa tozalansinmi?"</string>
<string name="master_clear_not_available" msgid="4676613348163652454">"Ushbu foydalanuvchiga sozlamalarni zavod holatiga qaytarishga ruxsat berilmagan"</string>
@@ -1656,7 +1656,7 @@
</plurals>
<string name="location_category_recent_location_access" msgid="286059523360285026">"Oxirgi joylashuv axboroti"</string>
<string name="location_recent_location_access_view_details" msgid="2051602261436245905">"Tafsilotlar"</string>
- <string name="location_no_recent_apps" msgid="77502059586413278">"Hech qanday ilova yaqin vaqtda joylashuv ma‘lumotini so‘ramadi"</string>
+ <string name="location_no_recent_apps" msgid="77502059586413278">"Yaqin-orada hech qanday ilova joylashuv axborotini talab qilmadi"</string>
<string name="location_no_recent_accesses" msgid="6289916310397279890">"Hech qanday ilova yaqinda joylashuv axborotidan foydalanmagan"</string>
<string name="location_high_battery_use" msgid="7177199869979522663">"Yuqori batareya sarfi"</string>
<string name="location_low_battery_use" msgid="5030448574501435888">"Batareya sarfi kam"</string>
@@ -1735,9 +1735,9 @@
<string name="lockpassword_strong_auth_required_device_pattern" msgid="1014214190135045781">"Grafik kalitni kiriting"</string>
<string name="lockpassword_strong_auth_required_device_pin" msgid="24030584350601016">"Qurilma PIN kodini kiriting"</string>
<string name="lockpassword_strong_auth_required_device_password" msgid="7746588206458754598">"Qurilma parolini kiriting"</string>
- <string name="lockpassword_strong_auth_required_work_pattern" msgid="6861154706098327320">"Ishchi profil grafik kalitini kiriting"</string>
- <string name="lockpassword_strong_auth_required_work_pin" msgid="6306902249365524526">"Ishchi profil PIN kodini kiriting"</string>
- <string name="lockpassword_strong_auth_required_work_password" msgid="2917338218971012776">"Ishchi profil parolini kiriting"</string>
+ <string name="lockpassword_strong_auth_required_work_pattern" msgid="6861154706098327320">"Ish profili grafik kalitini kiriting"</string>
+ <string name="lockpassword_strong_auth_required_work_pin" msgid="6306902249365524526">"Ish profili PIN kodini kiriting"</string>
+ <string name="lockpassword_strong_auth_required_work_password" msgid="2917338218971012776">"Ish profili parolini kiriting"</string>
<string name="lockpassword_confirm_your_pattern_details_frp" msgid="1085862410379709928">"Telefoningiz zavod sozlamalariga qaytarildi. Bu telefondan foydalanish uchun avvalgi grafik kalitni kiriting."</string>
<string name="lockpassword_confirm_your_pin_details_frp" msgid="6849889353126558761">"Telefoningiz zavod sozlamalariga qaytarildi. Bu telefondan foydalanish uchun avvalgi PIN kodni kiriting."</string>
<string name="lockpassword_confirm_your_password_details_frp" msgid="3239944795659418737">"Telefoningiz zavod sozlamalariga qaytarildi. Bu telefondan foydalanish uchun avvalgi parolni kiriting."</string>
@@ -1774,13 +1774,13 @@
<string name="lockpattern_settings_help_how_to_record" msgid="6037403647312543908">"Grafik kalit qanday chiziladi"</string>
<string name="lockpattern_too_many_failed_confirmation_attempts" msgid="3043127997770535921">"Juda ko‘p noto‘g‘ri urinishlar bo‘ldi! <xliff:g id="NUMBER">%d</xliff:g> soniyadan so‘ng qayta urinib ko‘ring."</string>
<string name="activity_not_found" msgid="3492413375341165453">"Ilova telefoningizga o‘rnatilmagan."</string>
- <string name="lock_settings_profile_title" msgid="3928992050074556160">"Ishchi profil xavfsizligi"</string>
- <string name="lock_settings_profile_screen_lock_title" msgid="285267471459162203">"Ishchi profil ekran qulfi"</string>
+ <string name="lock_settings_profile_title" msgid="3928992050074556160">"Ish profili xavfsizligi"</string>
+ <string name="lock_settings_profile_screen_lock_title" msgid="285267471459162203">"Ish profili ekran qulfi"</string>
<string name="lock_settings_profile_unification_title" msgid="2629698644191935287">"Bitta qulfdan foydalanish"</string>
- <string name="lock_settings_profile_unification_summary" msgid="4797188229308317207">"Ishchi profil va qurilma ekrani uchun bitta qulfdan foydalanish"</string>
+ <string name="lock_settings_profile_unification_summary" msgid="4797188229308317207">"Ish profili va qurilma ekrani uchun bitta qulfdan foydalanish"</string>
<string name="lock_settings_profile_unification_dialog_title" msgid="1690211342491067179">"Bitta qulfdan foydalanilsinmi?"</string>
- <string name="lock_settings_profile_unification_dialog_body" msgid="8629158560032603101">"Qurilmangiz ishchi profilingiz ekran qulfidan foydalanadi. Ishchi profil qulfi qoidalari ikkala qulfga ham qo‘llaniladi."</string>
- <string name="lock_settings_profile_unification_dialog_uncompliant_body" msgid="1217609779267643474">"Ishchi profilning ekran qulfi sozlamalari tashkilotingiz xavfsizlik qoidalariga mos kelmaydi. Qurilma ekrani va ishchi profil uchun bitta qulfdan foydalanishingiz mumkin. Lekin har qanday ishchi profil qulfi qoidalari qo‘llaniladi."</string>
+ <string name="lock_settings_profile_unification_dialog_body" msgid="8629158560032603101">"Qurilmangiz ishchi profilingiz ekran qulfidan foydalanadi. Ish profili qulfi qoidalari ikkala qulfga ham qo‘llaniladi."</string>
+ <string name="lock_settings_profile_unification_dialog_uncompliant_body" msgid="1217609779267643474">"Ish profilining ekran qulfi sozlamalari tashkilotingiz xavfsizlik qoidalariga mos kelmaydi. Qurilma ekrani va ish profili uchun bitta qulfdan foydalanishingiz mumkin. Lekin har qanday ish profili qulfi qoidalari qo‘llaniladi."</string>
<string name="lock_settings_profile_unification_dialog_confirm" msgid="888942752619181804">"Bitta qulfdan foydalanish"</string>
<string name="lock_settings_profile_unification_dialog_uncompliant_confirm" msgid="8046452284593057185">"Bitta qulfdan foydalanish"</string>
<string name="lock_settings_profile_unified_summary" msgid="5347244550751740962">"Qurilmaning qulflash usulidan foydalanish"</string>
@@ -1829,7 +1829,7 @@
<string name="app_factory_reset" msgid="8718986000278776272">"Yangilanishlarni o‘chirish"</string>
<string name="auto_launch_enable_text" msgid="3372898942144027341">"Ushbu ilovaning ba’zi andoza harakatlarini tanladingiz."</string>
<string name="always_allow_bind_appwidgets_text" msgid="2286211654774611037">"Ushbu ilova vidjetlar yaratish va ularning ma‘lumotlariga kirishiga ruxsat berishni tanladingiz."</string>
- <string name="auto_launch_disable_text" msgid="8560921288036801416">"Birlamchi sozlamalar o‘rnatilmagan."</string>
+ <string name="auto_launch_disable_text" msgid="8560921288036801416">"Birlamchi sozlamalar belgilanmagan."</string>
<string name="clear_activities" msgid="2068014972549235347">"Birlamchilarni tozalash"</string>
<string name="screen_compatibility_text" msgid="1768064020294301496">"Ushbu ilova siznikidaqa ekranlar uchun mos qilib chiqarilmagan. Ekraningiz moslamalarini mana bu yerda o‘zgartirishingiz mumkin."</string>
<string name="ask_compatibility" msgid="6687958195768084807">"Ishga tushirilganda so‘rash"</string>
@@ -1973,7 +1973,7 @@
<string name="show_ime_summary" msgid="3246628154011464373">"Jismoniy klaviatura ulanganida ekranda chiqib turadi"</string>
<string name="keyboard_shortcuts_helper" msgid="6574386807271399788">"Tezkor tugmalar"</string>
<string name="keyboard_shortcuts_helper_summary" msgid="8024313306403779742">"Tezkor tugmalarni ekranga chiqarish"</string>
- <string name="language_and_input_for_work_category_title" msgid="2053255944038892588">"Ishchi profil klaviaturalari va vositalari"</string>
+ <string name="language_and_input_for_work_category_title" msgid="2053255944038892588">"Ish profili klaviaturalari va vositalari"</string>
<string name="virtual_keyboards_for_work_title" msgid="3968291646938204523">"Ish uchun virtual klaviatura"</string>
<string name="default_keyboard_layout" msgid="9171704064451242230">"Standart"</string>
<string name="pointer_speed" msgid="800691982011350432">"Kursor tezligi"</string>
@@ -2613,8 +2613,8 @@
<string name="account_sync_settings_title" msgid="3344538161552327748">"Sinxronlash"</string>
<string name="sync_is_failing" msgid="8284618104132302644">"Sinxronizatsiyada muammo bor. Tez orada qayta tiklanadi."</string>
<string name="add_account_label" msgid="4461298847239641874">"Hisob kiritish"</string>
- <string name="managed_profile_not_available_label" msgid="8784246681719821917">"Ishchi profil hali mavjud emas"</string>
- <string name="work_mode_label" msgid="6845849194740195757">"Ishchi profil"</string>
+ <string name="managed_profile_not_available_label" msgid="8784246681719821917">"Ish profili hali mavjud emas"</string>
+ <string name="work_mode_label" msgid="6845849194740195757">"Ish profili"</string>
<string name="work_mode_on_summary" msgid="1682781113156323592">"Tashkilotingiz tomonidan boshqariladi"</string>
<string name="work_mode_off_summary" msgid="1688885392211178315">"Ilovalar va bildirishnomalar o‘chiq"</string>
<string name="remove_managed_profile_label" msgid="4625542553784793536">"Ishchi profilni o‘chirish"</string>
@@ -2875,7 +2875,7 @@
<string name="user_set_lock_button" msgid="4660971133148866612">"Qulf o‘rnatish"</string>
<string name="user_summary_not_set_up" msgid="6436691939044332679">"Sozlanmagan"</string>
<string name="user_summary_restricted_not_set_up" msgid="896552290436689508">"Sozlanmagan - Cheklangan profil"</string>
- <string name="user_summary_managed_profile_not_set_up" msgid="3032986082684011281">"Ishchi profil – sozlanmagan"</string>
+ <string name="user_summary_managed_profile_not_set_up" msgid="3032986082684011281">"Ish profili – sozlanmagan"</string>
<string name="user_admin" msgid="805802526361071709">"Administrator"</string>
<string name="user_you" msgid="8212549708652717106">"Siz (<xliff:g id="NAME">%s</xliff:g>)"</string>
<string name="user_nickname" msgid="1088216221559125529">"Nik nomi"</string>
@@ -3109,7 +3109,7 @@
<string name="keywords_color_temperature" msgid="2255253972992035046">"rang, harorat, D65, D73, oq, sariq, ko‘k, iliq, salqin"</string>
<string name="keywords_lockscreen" msgid="4936846554280830394">"qulfni ochish uchun surish, parol, grafik kalit, PIN kod"</string>
<string name="keywords_profile_challenge" msgid="8653718001253979611">"ish vazifasi, ish, profil"</string>
- <string name="keywords_unification" msgid="2020759909366983593">"ishchi profil, boshqariluvchi profil, birlashtirish, birlashuv, ish, profil"</string>
+ <string name="keywords_unification" msgid="2020759909366983593">"ish profili, boshqariluvchi profil, birlashtirish, birlashuv, ish, profil"</string>
<string name="keywords_gesture" msgid="5031323247529869644">"imo-ishoralar"</string>
<string name="keywords_payment_settings" msgid="4745023716567666052">"to‘lash, bosish, to‘lovlar"</string>
<string name="keywords_backup" msgid="7433356270034921627">"zaxira, zaxira nusxa olish"</string>
@@ -3153,7 +3153,7 @@
<string name="media_volume_option_title" msgid="3553411883305505682">"Multimedia tovushi"</string>
<string name="remote_media_volume_option_title" msgid="6355710054191873836">"Translatsiya tovushi balandligi"</string>
<string name="call_volume_option_title" msgid="5028003296631037334">"Suhbat tovushi"</string>
- <string name="alarm_volume_option_title" msgid="3184076022438477047">"Signal tovushi"</string>
+ <string name="alarm_volume_option_title" msgid="3184076022438477047">"Signal balandligi"</string>
<string name="ring_volume_option_title" msgid="2038924918468372264">"Jiringlash tovushi"</string>
<string name="notification_volume_option_title" msgid="1358512611511348260">"Bildirishnomalar ovozi"</string>
<string name="ringtone_title" msgid="1409086028485922583">"Telefon ringtoni"</string>
@@ -3296,7 +3296,7 @@
<string name="zen_onboarding_new_setting_summary" msgid="8264430315983860075">"Bildirishnomalar chiqmaydi yoki eshittirilmaydi. Yulduzchali kontaktlardan chaqiruvlar va qayta chaqiruvlarga ruxsat berilgan."</string>
<string name="zen_onboarding_current_setting_summary" msgid="3569246708507270821">"(Joriy parametr)"</string>
<string name="zen_onboarding_dnd_visual_disturbances_header" msgid="7584229011611927613">"Bezovta qilinmasin rejimining bildirishnomalar sozlamalari o‘zgartirilsinmi?"</string>
- <string name="sound_work_settings" msgid="4140215240360927923">"Ishchi profil ovozlari"</string>
+ <string name="sound_work_settings" msgid="4140215240360927923">"Ish profili ovozlari"</string>
<string name="work_use_personal_sounds_title" msgid="531727195073003599">"Shaxsiy profil ovozlaridan foydalanish"</string>
<string name="work_use_personal_sounds_summary" msgid="2886871383995187441">"Tovushlar ishchi va shaxsiy profillar uchun bir xil"</string>
<string name="work_ringtone_title" msgid="5499360583947410224">"Ishchi telefon ringtoni"</string>
@@ -3305,7 +3305,7 @@
<string name="work_sound_same_as_personal" msgid="7728560881697159758">"Shaxsiy profilniki bilan bir xil"</string>
<string name="work_sync_dialog_title" msgid="4799120971202956837">"Tovushlar almashtirilsinmi?"</string>
<string name="work_sync_dialog_yes" msgid="2110726233746476066">"Almashtirish"</string>
- <string name="work_sync_dialog_message" msgid="944233463059129156">"Joriy ishchi profil tovushlaridan ishchi profilingizda foydalaniladi"</string>
+ <string name="work_sync_dialog_message" msgid="944233463059129156">"Joriy ish profili tovushlaridan ish profiliingizda foydalaniladi"</string>
<string name="ringtones_install_custom_sound_title" msgid="210551218424553671">"Maxsus ovoz qo‘shilsinmi?"</string>
<string name="ringtones_install_custom_sound_content" msgid="6683649115132255452">"Bu fayldan <xliff:g id="FOLDER_NAME">%s</xliff:g> jildiga nusxalanadi"</string>
<string name="ringtones_category_preference_title" msgid="4491932700769815470">"Ringtonlar"</string>
@@ -3336,14 +3336,14 @@
<string name="swipe_direction_rtl" msgid="4521416787262888813">"Yopish uchun chapga, menyuni ochish uchun oʻngga suring"</string>
<string name="notification_pulse_title" msgid="4861418327614907116">"Indikator"</string>
<string name="lock_screen_notifications_title" msgid="6889072265118747835">"Qulflangan ekranda"</string>
- <string name="locked_work_profile_notification_title" msgid="8307025804986190658">"Ishchi profil qulflanganda"</string>
+ <string name="locked_work_profile_notification_title" msgid="8307025804986190658">"Ish profili qulflanganda"</string>
<string name="lock_screen_notifications_summary_show" msgid="5788874994455257378">"Bildirishnomalar butun chiqsin"</string>
<string name="lock_screen_notifications_summary_hide" msgid="3668806866535260143">"Maxfiy axborotlar berkitilsin"</string>
<string name="lock_screen_notifications_summary_disable" msgid="3259929507369817672">"Bildirishnomalar chiqmasin"</string>
<string name="lock_screen_notifications_interstitial_message" msgid="4230189215124387818">"Qurilmangiz qulflanganda, bildirishnomalar qanday chiqsin?"</string>
<string name="lock_screen_notifications_interstitial_title" msgid="2832587379332443505">"Bildirishnomalar"</string>
<string name="lock_screen_notifications_summary_show_profile" msgid="8908775469657073273">"Ishchi bildirishnomalar butun chiqsin"</string>
- <string name="lock_screen_notifications_summary_hide_profile" msgid="7898086300511010591">"Ishchi profil ma’lumotlari berkitilsin"</string>
+ <string name="lock_screen_notifications_summary_hide_profile" msgid="7898086300511010591">"Ish profili ma’lumotlari berkitilsin"</string>
<string name="lock_screen_notifications_interstitial_message_profile" msgid="3324187664458600354">"Qurilmangiz qulflanganda, profil bildirishnomalari qanday chiqsin?"</string>
<string name="lock_screen_notifications_interstitial_title_profile" msgid="4043621508889929254">"Profil bildirishnomalari"</string>
<string name="notifications_title" msgid="8334011924253810654">"Bildirishnomalar"</string>
@@ -3377,7 +3377,7 @@
<string name="notifications_sent_weekly" msgid="5859675428990259432">"Haftasiga ~<xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="notifications_sent_never" msgid="237997329598144638">"Hech qachon"</string>
<string name="manage_notification_access_title" msgid="5348743662189787547">"Bildirishnomalarga kirish"</string>
- <string name="work_profile_notification_access_blocked_summary" msgid="8148871282484870576">"Ishchi profil bildirishnomalariga kirish taqiqlangan"</string>
+ <string name="work_profile_notification_access_blocked_summary" msgid="8148871282484870576">"Ish profili bildirishnomalariga kirish taqiqlangan"</string>
<string name="manage_notification_access_summary_zero" msgid="236809421271593016">"Ilovalar bildirishnomalarni ko‘ra olmaydi"</string>
<plurals name="manage_notification_access_summary_nonzero" formatted="false" msgid="8496218948429646792">
<item quantity="other">%d ilova bildirishnomalarni o‘qishi mumkin</item>
@@ -3576,7 +3576,7 @@
<string name="screen_pinning_unlock_pin" msgid="1441705536015645023">"Yechishda PIN kod talab qilinsin"</string>
<string name="screen_pinning_unlock_password" msgid="1017776884000170841">"Yechishdan oldin parol so‘ralsin"</string>
<string name="screen_pinning_unlock_none" msgid="9183040569733226911">"Yechish vaqtida qurilma qulflansin"</string>
- <string name="opening_paragraph_delete_profile_unknown_company" msgid="2350380017136403670">"Bu ishchi profil quyidagi tomonidan boshqariladi:"</string>
+ <string name="opening_paragraph_delete_profile_unknown_company" msgid="2350380017136403670">"Bu ish profili quyidagi tomonidan boshqariladi:"</string>
<string name="managing_admin" msgid="3212584016377581608">"<xliff:g id="ADMIN_APP_LABEL">%s</xliff:g> tomonidan boshqariladi"</string>
<string name="experimental_preference" msgid="5903223408406906322">"(Tajribaviy)"</string>
<string name="encryption_interstitial_header" msgid="3298397268731647519">"Xavfsiz ishga tushirish"</string>
@@ -3733,9 +3733,7 @@
<!-- no translation found for battery_summary (4345690800899981339) -->
<skip />
<string name="battery_power_management" msgid="2853925857548647969">"Quvvat boshqaruvi"</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for no_battery_summary (4105932628367471314) -->
- <skip />
+ <string name="no_battery_summary" msgid="4105932628367471314">"Toʻliq quvvatlanganidan beri quvvat sarflanmadi"</string>
<string name="app_notification_preferences" msgid="5154466638524523201">"Ilova sozlamalari"</string>
<string name="system_ui_settings" msgid="6751165163665775447">"SystemUI Tuner ko‘rsatilsin"</string>
<string name="additional_permissions" msgid="3142290772324571654">"Qo‘shimcha ruxsatlar"</string>
@@ -3919,7 +3917,7 @@
<string name="condition_cellular_summary" msgid="3607459310548343777">"Internet faqat Wi‑Fi orqali ishlaydi"</string>
<string name="condition_bg_data_title" msgid="184684435298857712">"Trafik tejash"</string>
<string name="condition_bg_data_summary" msgid="5194942860807136682">"Ayrim funksiyalar cheklangan"</string>
- <string name="condition_work_title" msgid="9046811302347490371">"Ishchi profil o‘chirilgan"</string>
+ <string name="condition_work_title" msgid="9046811302347490371">"Ish profili o‘chirilgan"</string>
<string name="condition_work_summary" msgid="5586134491975748565">"Ilova va bildirishnomalarga"</string>
<string name="condition_device_muted_action_turn_on_sound" msgid="5849285946804815263">"Ovozni yoqish"</string>
<string name="condition_device_muted_title" msgid="3930542786434609976">"Ovozsiz qilindi"</string>
@@ -4101,7 +4099,7 @@
<string name="quick_settings_developer_tiles" msgid="7423485925757678719">"Tezkor sozlamalarning dasturchi tugmalari"</string>
<string name="winscope_trace_quick_settings_title" msgid="940971040388411374">"Winscope trassirovkasi"</string>
<string name="sensors_off_quick_settings_title" msgid="3655699045300438902">"Sensorlar nofaol"</string>
- <string name="managed_profile_settings_title" msgid="4340409321523532402">"Ishchi profil sozlamalari"</string>
+ <string name="managed_profile_settings_title" msgid="4340409321523532402">"Ish profili sozlamalari"</string>
<string name="managed_profile_contact_search_title" msgid="7337225196804457095">"Kontaktlarni qidirish"</string>
<string name="managed_profile_contact_search_summary" msgid="7278267480246726951">"Tashkilot nomi bo‘yicha qidiruvda qo‘ng‘iroq qiluvchi abonent va uning kontaktini aniqlashga ruxsat berish"</string>
<string name="cross_profile_calendar_title" msgid="2351605904015067145">"Taqvimlarni sinxronlash"</string>
@@ -4229,7 +4227,7 @@
<string name="enterprise_privacy_lock_device" msgid="1533125067038409945">"Administrator qurilmani qulflashi va parolni o‘zgartirishi mumkin"</string>
<string name="enterprise_privacy_wipe_device" msgid="7555287990273929922">"Administrator barcha qurilma ma’lumotlarini o‘chirib tashlashi mumkin"</string>
<string name="enterprise_privacy_failed_password_wipe_device" msgid="4101502079202483156">"Qurilmadagi barcha ma’lumotlar o‘chirib tashlanishi uchun necha marta parol xato kiritilishi kerak"</string>
- <string name="enterprise_privacy_failed_password_wipe_work" msgid="2881646286634693392">"Ishchi profil ma’lumotlari o‘chirib tashlanishi uchun necha marta parol xato kiritilishi kerak"</string>
+ <string name="enterprise_privacy_failed_password_wipe_work" msgid="2881646286634693392">"Ish profili ma’lumotlari o‘chirib tashlanishi uchun necha marta parol xato kiritilishi kerak"</string>
<plurals name="enterprise_privacy_number_failed_password_wipe" formatted="false" msgid="562550414712223382">
<item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ta urinish</item>
<item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ta urinish</item>
diff --git a/tests/CarDeveloperOptions/res/values-vi/strings.xml b/tests/CarDeveloperOptions/res/values-vi/strings.xml
index ef558c8..fbf0dcb 100644
--- a/tests/CarDeveloperOptions/res/values-vi/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-vi/strings.xml
@@ -353,7 +353,7 @@
<string name="show_owner_info_on_lockscreen_label" msgid="4510756693837171575">"Hiển thị thông tin chủ sở hữu trên màn hình khóa"</string>
<string name="owner_info_settings_title" msgid="2537966178998339896">"Thông điệp trên màn hình khóa"</string>
<string name="security_enable_widgets_title" msgid="1701510007926738088">"Bật tiện ích"</string>
- <string name="security_enable_widgets_disabled_summary" msgid="4408176087132339331">"Bị quản trị viên vô hiệu hóa"</string>
+ <string name="security_enable_widgets_disabled_summary" msgid="4408176087132339331">"Đã bị quản trị viên vô hiệu hóa"</string>
<string name="lockdown_settings_title" msgid="4534779922580115990">"Hiện tùy chọn khóa"</string>
<string name="lockdown_settings_summary" msgid="7270756909878256174">"Hiển thị tùy chọn nút nguồn để tắt tính năng Smart Lock, mở khóa bằng vân tay, và thông báo trên màn hình khóa"</string>
<string name="trust_agents_extend_unlock_title" msgid="3582017561316089951">"Tác nhân tin cậy chỉ kéo dài thời gian mở khóa"</string>
@@ -387,7 +387,7 @@
<string name="security_settings_summary" msgid="5210109100643223686">"Đặt Vị trí của tôi, mở khóa màn hình, khóa thẻ SIM, khóa bộ nhớ thông tin xác thực"</string>
<string name="cdma_security_settings_summary" msgid="1783066617800041869">"Đặt Vị trí của tôi, mở khóa màn hình, khóa bộ nhớ thông tin xác thực"</string>
<string name="security_passwords_title" msgid="6853942836045862315">"Bảo mật"</string>
- <string name="disabled_by_administrator_summary" msgid="6099821045360491127">"Bị quản trị viên vô hiệu hóa"</string>
+ <string name="disabled_by_administrator_summary" msgid="6099821045360491127">"Đã bị quản trị viên vô hiệu hóa"</string>
<string name="security_status_title" msgid="1261960357751754428">"Trạng thái bảo mật"</string>
<string name="security_dashboard_summary_face" msgid="2536136110153593745">"Phương thức khóa màn hình, mở khóa bằng khuôn mặt"</string>
<string name="security_dashboard_summary" msgid="4048877125766167227">"Phương thức khóa màn hình, vân tay"</string>
@@ -934,7 +934,7 @@
<string name="wifi_ip_settings" msgid="4636102290236116946">"Cài đặt IP"</string>
<string name="wifi_privacy_settings" msgid="4462092795794247809">"Quyền riêng tư"</string>
<string name="wifi_privacy_settings_ephemeral_summary" msgid="2411375348287064283">"Địa chỉ MAC gán ngẫu nhiên"</string>
- <string name="wifi_dpp_add_device_to_network" msgid="8871041525483253430">"Thêm một thiết bị"</string>
+ <string name="wifi_dpp_add_device_to_network" msgid="8871041525483253430">"Thêm thiết bị"</string>
<string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"Đưa mã QR vào giữa khung bên dưới để thêm thiết bị vào “<xliff:g id="SSID">%1$s</xliff:g>”"</string>
<string name="wifi_dpp_scan_qr_code" msgid="6021600592661235546">"Quét mã QR"</string>
<string name="wifi_dpp_scan_qr_code_join_network" msgid="3085162928804379545">"Căn giữa mã QR dưới đây để kết nối với “<xliff:g id="SSID">%1$s</xliff:g>”"</string>
@@ -3715,7 +3715,7 @@
<string name="high_power_prompt_body" msgid="8067395096053552289">"Cho phép <xliff:g id="APP_NAME">%1$s</xliff:g> luôn chạy trong nền có thể làm giảm thời lượng pin. \n\nBạn có thể thay đổi tùy chọn này trong phần Cài đặt > Ứng dụng và thông báo."</string>
<string name="battery_summary" msgid="4345690800899981339">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> sử dụng kể từ lần sạc đầy gần đây nhất"</string>
<string name="battery_power_management" msgid="2853925857548647969">"Quản lý nguồn"</string>
- <string name="no_battery_summary" msgid="4105932628367471314">"Không sử dụng pin kể từ lần sạc đầy cuối cùng"</string>
+ <string name="no_battery_summary" msgid="4105932628367471314">"Không sử dụng pin kể từ lần sạc đầy gần đây nhất"</string>
<string name="app_notification_preferences" msgid="5154466638524523201">"Cài đặt ứng dụng"</string>
<string name="system_ui_settings" msgid="6751165163665775447">"Hiện Bộ điều chỉnh SystemUI"</string>
<string name="additional_permissions" msgid="3142290772324571654">"Quyền khác"</string>
@@ -4002,7 +4002,7 @@
<string name="suggestion_additional_fingerprints" msgid="3434467207282466411">"Thêm một vân tay khác"</string>
<string name="suggestion_additional_fingerprints_summary" msgid="1916547587832484196">"Mở khóa bằng vân tay khác"</string>
<string name="battery_saver_on_summary" msgid="6841062406467435672">"Bật"</string>
- <string name="battery_saver_off_scheduled_summary" msgid="3740414764069188669">"Sẽ bật lúc pin ở mức <xliff:g id="BATTERY_PERCENTAGE">%1$s</xliff:g>"</string>
+ <string name="battery_saver_off_scheduled_summary" msgid="3740414764069188669">"Sẽ bật khi pin ở mức <xliff:g id="BATTERY_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="battery_saver_off_summary" msgid="8736555723004299721">"Đang tắt"</string>
<string name="battery_saver_button_turn_on" msgid="3748696527267573793">"Bật ngay"</string>
<string name="battery_saver_button_turn_off" msgid="2912950982503267828">"Tắt ngay bây giờ"</string>
@@ -4078,7 +4078,7 @@
<string name="dark_ui_mode_title" msgid="8774932716427742413">"Chọn giao diện"</string>
<string name="dark_ui_settings_light_summary" msgid="5219102347744462812">"Tùy chọn cài đặt này cũng áp dụng cho các ứng dụng"</string>
<string name="dark_ui_settings_dark_summary" msgid="7042737828943784289">"Các ứng dụng được hỗ trợ cũng sẽ chuyển sang giao diện tối"</string>
- <string name="quick_settings_developer_tiles" msgid="7423485925757678719">"Ô nhà phát triển cài đặt nhanh"</string>
+ <string name="quick_settings_developer_tiles" msgid="7423485925757678719">"Ô cài đặt nhanh dành cho nhà phát triển"</string>
<string name="winscope_trace_quick_settings_title" msgid="940971040388411374">"Dấu vết Winscope"</string>
<string name="sensors_off_quick_settings_title" msgid="3655699045300438902">"Tắt cảm biến"</string>
<string name="managed_profile_settings_title" msgid="4340409321523532402">"Cài đặt hồ sơ công việc"</string>
diff --git a/tests/CarDeveloperOptions/res/values-zh-rCN/strings.xml b/tests/CarDeveloperOptions/res/values-zh-rCN/strings.xml
index dafc79e..478c0e3 100644
--- a/tests/CarDeveloperOptions/res/values-zh-rCN/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-zh-rCN/strings.xml
@@ -1210,8 +1210,8 @@
<string name="adaptive_sleep_summary_off" msgid="2891586225954973431">"关闭"</string>
<string name="adaptive_sleep_description" msgid="812673735459170009">"避免屏幕在您查看它时关闭。"</string>
<string name="adaptive_sleep_privacy" msgid="5706802215479902623">"屏幕感知功能会通过前置摄像头来确定是否有人正在看屏幕。这个功能只会在设备上运行,系统决不会存储图片或将图片发送给 Google。"</string>
- <string name="night_display_title" msgid="1305002424893349814">"夜间模式"</string>
- <string name="night_display_text" msgid="5330502493684652527">"夜间模式会将您的屏幕色调调为琥珀色,可让您在光线昏暗的环境下更舒适地查看屏幕或阅读文字,并有助您入睡。"</string>
+ <string name="night_display_title" msgid="1305002424893349814">"护眼模式"</string>
+ <string name="night_display_text" msgid="5330502493684652527">"护眼模式会将您的屏幕色调调为琥珀色,可让您在光线昏暗的环境下更舒适地查看屏幕或阅读文字,并有助您入睡。"</string>
<string name="night_display_auto_mode_title" msgid="8493573087102481588">"设定时间"</string>
<string name="night_display_auto_mode_never" msgid="2897444637217807088">"无"</string>
<string name="night_display_auto_mode_custom" msgid="1400891076453963151">"在设定的时间开启"</string>
@@ -1730,7 +1730,7 @@
<string name="lockpassword_confirm_your_pin_generic" msgid="8732268389177735264">"请输入您的设备 PIN 码以继续"</string>
<string name="lockpassword_confirm_your_password_generic" msgid="6304552647060899594">"请输入您的设备密码以继续"</string>
<string name="lockpassword_confirm_your_pattern_generic_profile" msgid="3074250084050465513">"请绘制您的工作解锁图案以继续"</string>
- <string name="lockpassword_confirm_your_pin_generic_profile" msgid="6037908971086439523">"请输入您的工作 PIN 码以继续"</string>
+ <string name="lockpassword_confirm_your_pin_generic_profile" msgid="6037908971086439523">"需输入您的工作资料 PIN 码才能继续"</string>
<string name="lockpassword_confirm_your_password_generic_profile" msgid="2646162490703489685">"请输入您的工作密码以继续"</string>
<string name="lockpassword_strong_auth_required_device_pattern" msgid="1014214190135045781">"为了提升安全性,请绘制您的设备解锁图案"</string>
<string name="lockpassword_strong_auth_required_device_pin" msgid="24030584350601016">"为了提升安全性,请输入您的设备 PIN 码"</string>
@@ -3906,9 +3906,9 @@
<string name="condition_device_muted_summary" msgid="3101055117680109021">"通话和通知"</string>
<string name="condition_device_vibrate_title" msgid="5712659354868872338">"仅振动"</string>
<string name="condition_device_vibrate_summary" msgid="9073880731894828604">"通话和通知"</string>
- <string name="night_display_suggestion_title" msgid="4222839610992282188">"设置“夜间模式”时间安排"</string>
+ <string name="night_display_suggestion_title" msgid="4222839610992282188">"设置“护眼模式”时间表"</string>
<string name="night_display_suggestion_summary" msgid="1754361016383576916">"每晚自动调节屏幕色调"</string>
- <string name="condition_night_display_title" msgid="9171491784857160135">"“夜间模式”已开启"</string>
+ <string name="condition_night_display_title" msgid="9171491784857160135">"“护眼模式”已开启"</string>
<string name="condition_night_display_summary" msgid="7885776986937527558">"已将屏幕调为琥珀色"</string>
<string name="condition_grayscale_title" msgid="1226351649203551299">"灰度模式"</string>
<string name="condition_grayscale_summary" msgid="749172886527349546">"仅以灰色显示"</string>
diff --git a/tests/CarDeveloperOptions/res/values-zh-rHK/arrays.xml b/tests/CarDeveloperOptions/res/values-zh-rHK/arrays.xml
index 0ae6440..bf81e93 100644
--- a/tests/CarDeveloperOptions/res/values-zh-rHK/arrays.xml
+++ b/tests/CarDeveloperOptions/res/values-zh-rHK/arrays.xml
@@ -473,8 +473,8 @@
</string-array>
<string-array name="wifi_metered_entries">
<item msgid="4329206416008519163">"自動偵測"</item>
- <item msgid="773943026484148895">"設定為按用量收費"</item>
- <item msgid="1008268820118852416">"設定為非按用量收費"</item>
+ <item msgid="773943026484148895">"視為按用量收費"</item>
+ <item msgid="1008268820118852416">"視為非按用量收費"</item>
</string-array>
<string-array name="wifi_privacy_entries">
<item msgid="6545683814310036454">"使用隨機 MAC (預設)"</item>
diff --git a/tests/CarDeveloperOptions/res/values-zh-rHK/strings.xml b/tests/CarDeveloperOptions/res/values-zh-rHK/strings.xml
index a711058..b609e83 100644
--- a/tests/CarDeveloperOptions/res/values-zh-rHK/strings.xml
+++ b/tests/CarDeveloperOptions/res/values-zh-rHK/strings.xml
@@ -935,13 +935,13 @@
<string name="wifi_privacy_settings" msgid="4462092795794247809">"私隱"</string>
<string name="wifi_privacy_settings_ephemeral_summary" msgid="2411375348287064283">"隨機化處理 MAC"</string>
<string name="wifi_dpp_add_device_to_network" msgid="8871041525483253430">"新增裝置"</string>
- <string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"相機對準以下二維條碼,即可將裝置新增至「<xliff:g id="SSID">%1$s</xliff:g>」"</string>
+ <string name="wifi_dpp_center_qr_code" msgid="3826108361797476758">"將下方方框對準二維條碼,即可將裝置加到「<xliff:g id="SSID">%1$s</xliff:g>」"</string>
<string name="wifi_dpp_scan_qr_code" msgid="6021600592661235546">"掃瞄二維條碼"</string>
<string name="wifi_dpp_scan_qr_code_join_network" msgid="3085162928804379545">"將二維條碼置於下方中間,即可連接至「<xliff:g id="SSID">%1$s</xliff:g>」"</string>
<string name="wifi_dpp_scan_qr_code_join_unknown_network" msgid="5682308317067290738">"掃瞄二維條碼以加入 Wi-Fi"</string>
<string name="wifi_dpp_share_wifi" msgid="1724161216219646284">"分享 Wi‑Fi"</string>
<string name="wifi_dpp_scan_qr_code_with_another_device" msgid="4357387474444884759">"掃瞄此二維條碼即可連線至「<xliff:g id="SSID">%1$s</xliff:g>」並分享密碼"</string>
- <string name="wifi_dpp_scan_open_network_qr_code_with_another_device" msgid="572011882416511818">"掃描此二維條碼即可連線至「<xliff:g id="SSID">%1$s</xliff:g>」"</string>
+ <string name="wifi_dpp_scan_open_network_qr_code_with_another_device" msgid="572011882416511818">"掃描此二維條碼,即可連接「<xliff:g id="SSID">%1$s</xliff:g>」"</string>
<string name="wifi_dpp_could_not_detect_valid_qr_code" msgid="27667719861826438">"無法讀取二維條碼。重新將二維條碼放在正中,然後再試一次"</string>
<string name="wifi_dpp_failure_authentication_or_configuration" msgid="9142051662156233679">"請再試一次。如果仍有問題,請聯絡裝置製造商"</string>
<string name="wifi_dpp_failure_not_compatible" msgid="4320027179973678283">"發生問題"</string>
diff --git a/tests/CarSecurityPermissionTest/Android.bp b/tests/CarSecurityPermissionTest/Android.bp
index 330568d..066ecc8 100644
--- a/tests/CarSecurityPermissionTest/Android.bp
+++ b/tests/CarSecurityPermissionTest/Android.bp
@@ -31,6 +31,7 @@
"androidx.test.ext.junit",
"androidx.test.rules",
"car-frameworks-service",
+ "compatibility-device-util-axt",
"mockito-target-minus-junit4",
"testng",
"truth-prebuilt",
diff --git a/tests/CarSecurityPermissionTest/src/com/android/car/user/CarUserManagerTest.java b/tests/CarSecurityPermissionTest/src/com/android/car/user/CarUserManagerTest.java
new file mode 100644
index 0000000..4ede567
--- /dev/null
+++ b/tests/CarSecurityPermissionTest/src/com/android/car/user/CarUserManagerTest.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.user;
+
+import static android.Manifest.permission.INTERACT_ACROSS_USERS;
+import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL;
+import static android.Manifest.permission.MANAGE_USERS;
+import static android.car.Car.CAR_USER_SERVICE;
+import static android.car.Car.createCar;
+import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType.CUSTOM_1;
+
+import static com.android.compatibility.common.util.ShellIdentityUtils.invokeMethodWithShellPermissionsNoReturn;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.testng.Assert.expectThrows;
+
+import android.app.Instrumentation;
+import android.car.Car;
+import android.car.user.CarUserManager;
+import android.car.user.CarUserManager.UserLifecycleListener;
+import android.content.Context;
+import android.os.Handler;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Objects;
+
+/**
+ * This class contains security permission tests for the {@link CarUserManager}'s system APIs.
+ */
+@RunWith(AndroidJUnit4.class)
+public final class CarUserManagerTest {
+ private static final int USRE_TYPE = 1;
+
+ private CarUserManager mCarUserManager;
+ private Context mContext;
+ private Instrumentation mInstrumentation;
+
+ @Before
+ public void setUp() {
+ mInstrumentation = InstrumentationRegistry.getInstrumentation();
+ mContext = mInstrumentation.getTargetContext();
+ Car car = Objects.requireNonNull(createCar(mContext, (Handler) null));
+ mCarUserManager = (CarUserManager) car.getCarManager(CAR_USER_SERVICE);
+
+ }
+
+ @Test
+ public void testSwitchUserPermission() throws Exception {
+ int target_uid = 100;
+ Exception e = expectThrows(SecurityException.class,
+ () -> mCarUserManager.switchUser(target_uid));
+ assertThat(e.getMessage()).contains(MANAGE_USERS);
+ }
+
+ @Test
+ public void testAddListenerPermission() {
+ UserLifecycleListener listener = (e) -> { };
+
+ Exception e = expectThrows(SecurityException.class,
+ () -> mCarUserManager.addListener(Runnable::run, listener));
+
+ assertThat(e.getMessage()).contains(INTERACT_ACROSS_USERS);
+ assertThat(e.getMessage()).contains(INTERACT_ACROSS_USERS_FULL);
+ }
+
+ @Test
+ public void testRemoveListenerPermission() throws Exception {
+ UserLifecycleListener listener = (e) -> { };
+ invokeMethodWithShellPermissionsNoReturn(mCarUserManager,
+ (um) -> um.addListener(Runnable::run, listener));
+
+ Exception e = expectThrows(SecurityException.class,
+ () -> mCarUserManager.removeListener(listener));
+
+ assertThat(e.getMessage()).contains(INTERACT_ACROSS_USERS);
+ assertThat(e.getMessage()).contains(INTERACT_ACROSS_USERS_FULL);
+ }
+
+ @Test
+ public void testGetUserIdentificationAssociationPermission() {
+ Exception e = expectThrows(SecurityException.class,
+ () -> mCarUserManager.getUserIdentificationAssociation(CUSTOM_1));
+ assertThat(e.getMessage()).contains(MANAGE_USERS);
+ }
+
+ @Test
+ public void testSetUserIdentificationAssociationPermission() {
+ Exception e = expectThrows(SecurityException.class,
+ () -> mCarUserManager.setUserIdentificationAssociation(
+ new int[] {CUSTOM_1}, new int[] {42}));
+ assertThat(e.getMessage()).contains(MANAGE_USERS);
+ }
+
+ @Test
+ public void testSetUserSwitchUiCallback() {
+ Exception e = expectThrows(SecurityException.class,
+ () -> mCarUserManager.getUserIdentificationAssociation(CUSTOM_1));
+ assertThat(e.getMessage()).contains(MANAGE_USERS);
+ }
+}
diff --git a/tests/EmbeddedKitchenSinkApp/res/layout/volume_test.xml b/tests/EmbeddedKitchenSinkApp/res/layout/volume_test.xml
index db48680..7cd5c95 100644
--- a/tests/EmbeddedKitchenSinkApp/res/layout/volume_test.xml
+++ b/tests/EmbeddedKitchenSinkApp/res/layout/volume_test.xml
@@ -16,12 +16,25 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
- <ListView
- android:id="@+id/volume_list"
+
+ <LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
+ android:layout_marginLeft="20dp"
+ android:orientation="vertical"
android:layout_weight="3">
- </ListView>
+ <com.google.android.material.tabs.TabLayout
+ android:id="@+id/zones_tab"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content">
+ </com.google.android.material.tabs.TabLayout>
+ <androidx.viewpager.widget.ViewPager
+ android:id="@+id/zone_view_pager"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1">
+ </androidx.viewpager.widget.ViewPager>
+ </LinearLayout>
<LinearLayout
android:layout_width="0dp"
@@ -31,12 +44,6 @@
android:layout_weight="1">
<Button
- android:id="@+id/refresh"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/refresh_volume"/>
-
- <Button
android:id="@+id/volume_up"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
diff --git a/tests/EmbeddedKitchenSinkApp/res/layout/zone_volume_tab.xml b/tests/EmbeddedKitchenSinkApp/res/layout/zone_volume_tab.xml
new file mode 100644
index 0000000..bb38d5a
--- /dev/null
+++ b/tests/EmbeddedKitchenSinkApp/res/layout/zone_volume_tab.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+ <ListView
+ android:id="@+id/volume_list"
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="3">
+ </ListView>
+</LinearLayout>
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/AudioZoneVolumeTabAdapter.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/AudioZoneVolumeTabAdapter.java
new file mode 100644
index 0000000..3e94f28
--- /dev/null
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/AudioZoneVolumeTabAdapter.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.car.kitchensink.volume;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentStatePagerAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public final class AudioZoneVolumeTabAdapter extends FragmentStatePagerAdapter {
+
+ private final List<Fragment> mFragmentList = new ArrayList<>();
+ private final List<String> mFragmentTitleList = new ArrayList<>();
+ AudioZoneVolumeTabAdapter(FragmentManager fm) {
+ super(fm);
+ }
+
+ @Override
+ public Fragment getItem(int position) {
+ return mFragmentList.get(position);
+ }
+
+ public void addFragment(Fragment fragment, String title) {
+ mFragmentList.add(fragment);
+ mFragmentTitleList.add(title);
+ notifyDataSetChanged();
+ }
+
+ @Nullable
+ @Override
+ public CharSequence getPageTitle(int position) {
+ return mFragmentTitleList.get(position);
+ }
+
+ @Override
+ public int getCount() {
+ return mFragmentList.size();
+ }
+}
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/VolumeAdapter.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/CarAudioZoneVolumeAdapter.java
similarity index 82%
rename from tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/VolumeAdapter.java
rename to tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/CarAudioZoneVolumeAdapter.java
index ec071dc..eb0c111 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/VolumeAdapter.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/CarAudioZoneVolumeAdapter.java
@@ -25,22 +25,21 @@
import android.widget.TextView;
import com.google.android.car.kitchensink.R;
-import com.google.android.car.kitchensink.volume.VolumeTestFragment.VolumeInfo;
+import com.google.android.car.kitchensink.volume.VolumeTestFragment.CarAudioZoneVolumeInfo;
-
-public class VolumeAdapter extends ArrayAdapter<VolumeInfo> {
+public final class CarAudioZoneVolumeAdapter extends ArrayAdapter<CarAudioZoneVolumeInfo> {
private final Context mContext;
- private VolumeInfo[] mVolumeList;
+ private CarAudioZoneVolumeInfo[] mVolumeList;
private final int mLayoutResourceId;
- private VolumeTestFragment mFragment;
+ private CarAudioZoneVolumeFragment mFragment;
-
- public VolumeAdapter(Context c, int layoutResourceId, VolumeInfo[] volumeList,
- VolumeTestFragment fragment) {
- super(c, layoutResourceId, volumeList);
+ public CarAudioZoneVolumeAdapter(Context context,
+ int layoutResourceId, CarAudioZoneVolumeInfo[] volumeList,
+ CarAudioZoneVolumeFragment fragment) {
+ super(context, layoutResourceId, volumeList);
mFragment = fragment;
- mContext = c;
+ mContext = context;
this.mLayoutResourceId = layoutResourceId;
this.mVolumeList = volumeList;
}
@@ -95,18 +94,17 @@
return mVolumeList.length;
}
-
- public void refreshVolumes(VolumeInfo[] volumes) {
+ public void refreshVolumes(CarAudioZoneVolumeInfo[] volumes) {
mVolumeList = volumes;
notifyDataSetChanged();
}
- static class ViewHolder {
- TextView id;
- TextView maxVolume;
- TextView currentVolume;
- Button upButton;
- Button downButton;
- Button requestButton;
+ private static final class ViewHolder {
+ public TextView id;
+ public TextView maxVolume;
+ public TextView currentVolume;
+ public Button upButton;
+ public Button downButton;
+ public Button requestButton;
}
}
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/CarAudioZoneVolumeFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/CarAudioZoneVolumeFragment.java
new file mode 100644
index 0000000..c1a712d
--- /dev/null
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/CarAudioZoneVolumeFragment.java
@@ -0,0 +1,188 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.car.kitchensink.volume;
+
+import android.car.media.CarAudioManager;
+import android.media.AudioManager;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.util.SparseIntArray;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ListView;
+
+import androidx.fragment.app.Fragment;
+
+import com.google.android.car.kitchensink.R;
+import com.google.android.car.kitchensink.volume.VolumeTestFragment.CarAudioZoneVolumeInfo;
+
+public final class CarAudioZoneVolumeFragment extends Fragment {
+ private static final String TAG = "CarVolumeTest."
+ + CarAudioZoneVolumeFragment.class.getSimpleName();
+ private static final boolean DEBUG = true;
+
+ private static final int MSG_VOLUME_CHANGED = 0;
+ private static final int MSG_REQUEST_FOCUS = 1;
+ private static final int MSG_FOCUS_CHANGED = 2;
+
+ private final int mZoneId;
+ private final CarAudioManager mCarAudioManager;
+ private final AudioManager mAudioManager;
+ private CarAudioZoneVolumeInfo[] mVolumeInfos =
+ new CarAudioZoneVolumeInfo[0];
+ private final Handler mHandler = new VolumeHandler();
+
+ private CarAudioZoneVolumeAdapter mCarAudioZoneVolumeAdapter;
+ private final SparseIntArray mGroupIdIndexMap = new SparseIntArray();
+
+ public void sendChangeMessage() {
+ mHandler.sendMessage(mHandler.obtainMessage(MSG_VOLUME_CHANGED));
+ }
+
+ private class VolumeHandler extends Handler {
+ private AudioFocusListener mFocusListener;
+
+ @Override
+ public void handleMessage(Message msg) {
+ if (DEBUG) {
+ Log.d(TAG, "zone " + mZoneId + " handleMessage : " + getMessageName(msg));
+ }
+ switch (msg.what) {
+ case MSG_VOLUME_CHANGED:
+ initVolumeInfo();
+ break;
+ case MSG_REQUEST_FOCUS:
+ int groupId = msg.arg1;
+ if (mFocusListener != null) {
+ mAudioManager.abandonAudioFocus(mFocusListener);
+ mVolumeInfos[mGroupIdIndexMap.get(groupId)].mHasFocus = false;
+ mCarAudioZoneVolumeAdapter.notifyDataSetChanged();
+ }
+
+ mFocusListener = new AudioFocusListener(groupId);
+ mAudioManager.requestAudioFocus(mFocusListener, groupId,
+ AudioManager.AUDIOFOCUS_GAIN);
+ break;
+ case MSG_FOCUS_CHANGED:
+ int focusGroupId = msg.arg1;
+ mVolumeInfos[mGroupIdIndexMap.get(focusGroupId)].mHasFocus = true;
+ mCarAudioZoneVolumeAdapter.refreshVolumes(mVolumeInfos);
+ break;
+ default :
+ Log.wtf(TAG,"VolumeHandler handleMessage called with unknown message"
+ + msg.what);
+
+ }
+ }
+ }
+
+ public CarAudioZoneVolumeFragment(int zoneId, CarAudioManager carAudioManager,
+ AudioManager audioManager) {
+ mZoneId = zoneId;
+ mCarAudioManager = carAudioManager;
+ mAudioManager = audioManager;
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ if (DEBUG) {
+ Log.d(TAG, "onCreateView " + mZoneId);
+ }
+ View v = inflater.inflate(R.layout.zone_volume_tab, container, false);
+ ListView volumeListView = v.findViewById(R.id.volume_list);
+ mCarAudioZoneVolumeAdapter =
+ new CarAudioZoneVolumeAdapter(getContext(), R.layout.volume_item, mVolumeInfos,
+ this);
+ initVolumeInfo();
+ volumeListView.setAdapter(mCarAudioZoneVolumeAdapter);
+ return v;
+ }
+
+ void initVolumeInfo() {
+ int volumeGroupCount = mCarAudioManager.getVolumeGroupCount(mZoneId);
+ mVolumeInfos = new CarAudioZoneVolumeInfo[volumeGroupCount + 1];
+ mGroupIdIndexMap.clear();
+ CarAudioZoneVolumeInfo titlesInfo = new CarAudioZoneVolumeInfo();
+ titlesInfo.mId = "Group id";
+ titlesInfo.mCurrent = "Current";
+ titlesInfo.mMax = "Max";
+ mVolumeInfos[0] = titlesInfo;
+
+ int i = 1;
+ for (int groupId = 0; groupId < volumeGroupCount; groupId++) {
+ CarAudioZoneVolumeInfo volumeInfo = new CarAudioZoneVolumeInfo();
+ mGroupIdIndexMap.put(groupId, i);
+ volumeInfo.mGroupId = groupId;
+ volumeInfo.mId = String.valueOf(groupId);
+ int current = mCarAudioManager.getGroupVolume(mZoneId, groupId);
+ int max = mCarAudioManager.getGroupMaxVolume(mZoneId, groupId);
+ volumeInfo.mCurrent = String.valueOf(current);
+ volumeInfo.mMax = String.valueOf(max);
+
+ mVolumeInfos[i] = volumeInfo;
+ if (DEBUG)
+ {
+ Log.d(TAG, groupId + " max: " + volumeInfo.mMax + " current: "
+ + volumeInfo.mCurrent);
+ }
+ i++;
+ }
+ mCarAudioZoneVolumeAdapter.refreshVolumes(mVolumeInfos);
+ }
+
+ public void adjustVolumeByOne(int groupId, boolean up) {
+ if (mCarAudioManager == null) {
+ Log.e(TAG, "CarAudioManager is null");
+ return;
+ }
+ int current = mCarAudioManager.getGroupVolume(mZoneId, groupId);
+ int volume = current + (up ? 1 : -1);
+ mCarAudioManager.setGroupVolume(mZoneId, groupId, volume,
+ AudioManager.FLAG_SHOW_UI | AudioManager.FLAG_PLAY_SOUND);
+ if (DEBUG) {
+ Log.d(TAG, "Set group " + groupId + " volume " + volume + " in audio zone "
+ + mZoneId);
+ }
+ mHandler.sendMessage(mHandler.obtainMessage(MSG_VOLUME_CHANGED));
+ }
+
+ public void requestFocus(int groupId) {
+ // Automatic volume change only works for primary audio zone.
+ if (mZoneId == CarAudioManager.PRIMARY_AUDIO_ZONE) {
+ mHandler.sendMessage(mHandler.obtainMessage(MSG_REQUEST_FOCUS, groupId));
+ }
+ }
+
+ private class AudioFocusListener implements AudioManager.OnAudioFocusChangeListener {
+ private final int mGroupId;
+ AudioFocusListener(int groupId) {
+ mGroupId = groupId;
+ }
+ @Override
+ public void onAudioFocusChange(int focusChange) {
+ if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
+ mHandler.sendMessage(mHandler.obtainMessage(MSG_FOCUS_CHANGED, mGroupId, 0));
+ } else {
+ Log.e(TAG, "Audio focus request failed");
+ }
+ }
+ }
+}
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/VolumeTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/VolumeTestFragment.java
index f753efe..5c662d4 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/VolumeTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/volume/VolumeTestFragment.java
@@ -18,32 +18,37 @@
import android.car.Car;
import android.car.Car.CarServiceLifecycleListener;
import android.car.media.CarAudioManager;
+import android.car.media.CarAudioManager.CarVolumeCallback;
import android.content.Context;
import android.media.AudioManager;
import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
import android.util.Log;
-import android.util.SparseIntArray;
+import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.ListView;
import android.widget.SeekBar;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
+import androidx.viewpager.widget.ViewPager;
import com.google.android.car.kitchensink.R;
+import com.google.android.material.tabs.TabLayout;
-public class VolumeTestFragment extends Fragment {
+import java.util.List;
+
+import javax.annotation.concurrent.GuardedBy;
+
+public final class VolumeTestFragment extends Fragment {
private static final String TAG = "CarVolumeTest";
- private static final int MSG_VOLUME_CHANGED = 0;
- private static final int MSG_REQUEST_FOCUS = 1;
- private static final int MSG_FOCUS_CHANGED= 2;
+ private static final boolean DEBUG = true;
private AudioManager mAudioManager;
- private VolumeAdapter mAdapter;
+ private AudioZoneVolumeTabAdapter mAudioZoneAdapter;
+ @GuardedBy("mLock")
+ private final SparseArray<CarAudioZoneVolumeFragment> mZoneVolumeFragments =
+ new SparseArray<>();
private CarAudioManager mCarAudioManager;
private Car mCar;
@@ -51,58 +56,10 @@
private SeekBar mFader;
private SeekBar mBalance;
- private final Handler mHandler = new VolumeHandler();
+ private TabLayout mZonesTabLayout;
+ private Object mLock = new Object();
- private class VolumeHandler extends Handler {
- private AudioFocusListener mFocusListener;
-
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case MSG_VOLUME_CHANGED:
- initVolumeInfo();
- break;
- case MSG_REQUEST_FOCUS:
- int groupId = msg.arg1;
- if (mFocusListener != null) {
- mAudioManager.abandonAudioFocus(mFocusListener);
- mVolumeInfos[mGroupIdIndexMap.get(groupId)].mHasFocus = false;
- mAdapter.notifyDataSetChanged();
- }
-
- mFocusListener = new AudioFocusListener(groupId);
- mAudioManager.requestAudioFocus(mFocusListener, groupId,
- AudioManager.AUDIOFOCUS_GAIN);
- break;
- case MSG_FOCUS_CHANGED:
- int focusGroupId = msg.arg1;
- mVolumeInfos[mGroupIdIndexMap.get(focusGroupId)].mHasFocus = true;
- mAdapter.refreshVolumes(mVolumeInfos);
- break;
-
- }
- }
- }
-
- private VolumeInfo[] mVolumeInfos = new VolumeInfo[0];
- private SparseIntArray mGroupIdIndexMap = new SparseIntArray();
-
- private class AudioFocusListener implements AudioManager.OnAudioFocusChangeListener {
- private final int mGroupId;
- public AudioFocusListener(int groupId) {
- mGroupId = groupId;
- }
- @Override
- public void onAudioFocusChange(int focusChange) {
- if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
- mHandler.sendMessage(mHandler.obtainMessage(MSG_FOCUS_CHANGED, mGroupId, 0));
- } else {
- Log.e(TAG, "Audio focus request failed");
- }
- }
- }
-
- public static class VolumeInfo {
+ public static class CarAudioZoneVolumeInfo {
public int mGroupId;
public String mId;
public String mMax;
@@ -110,30 +67,63 @@
public boolean mHasFocus;
}
+ private final class CarVolumeChangeListener extends CarVolumeCallback {
+ @Override
+ public void onGroupVolumeChanged(int zoneId, int groupId, int flags) {
+ if (DEBUG) {
+ Log.d(TAG, "onGroupVolumeChanged volume changed for zone "
+ + zoneId);
+ }
+ synchronized (mLock) {
+ CarAudioZoneVolumeFragment fragment = mZoneVolumeFragments.get(zoneId);
+ if (fragment != null) {
+ fragment.sendChangeMessage();
+ }
+ }
+ }
+
+ @Override
+ public void onMasterMuteChanged(int zoneId, int flags) {
+ if (DEBUG) {
+ Log.d(TAG, "onMasterMuteChanged master mute "
+ + mAudioManager.isMasterMute());
+ }
+ }
+ }
+
+ private final CarVolumeCallback mCarVolumeCallback = new CarVolumeChangeListener();
+
private CarServiceLifecycleListener mCarServiceLifecycleListener = (car, ready) -> {
if (!ready) {
- Log.d(TAG, "Disconnect from Car Service");
+ if (DEBUG) {
+ Log.d(TAG, "Disconnect from Car Service");
+ }
return;
}
- Log.d(TAG, "Connected to Car Service");
+ if (DEBUG) {
+ Log.d(TAG, "Connected to Car Service");
+ }
mCarAudioManager = (CarAudioManager) car.getCarManager(Car.AUDIO_SERVICE);
initVolumeInfo();
+ mCarAudioManager.registerCarVolumeCallback(mCarVolumeCallback);
};
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
- View v = inflater.inflate(R.layout.volume_test, container, false);
-
- ListView volumeListView = v.findViewById(R.id.volume_list);
mAudioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
- mAdapter = new VolumeAdapter(getContext(), R.layout.volume_item, mVolumeInfos, this);
- volumeListView.setAdapter(mAdapter);
+ View v = inflater.inflate(R.layout.volume_test, container, false);
- v.findViewById(R.id.refresh).setOnClickListener((view) -> initVolumeInfo());
+ mZonesTabLayout = v.findViewById(R.id.zones_tab);
+ ViewPager viewPager = (ViewPager) v.findViewById(R.id.zone_view_pager);
- final SeekBar.OnSeekBarChangeListener seekListener = new SeekBar.OnSeekBarChangeListener() {
+ mAudioZoneAdapter = new AudioZoneVolumeTabAdapter(getChildFragmentManager());
+ viewPager.setAdapter(mAudioZoneAdapter);
+ mZonesTabLayout.setupWithViewPager(viewPager);
+
+ SeekBar.OnSeekBarChangeListener seekListener =
+ new SeekBar.OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
final float percent = (progress - 100) / 100.0f;
if (seekBar.getId() == R.id.fade_bar) {
@@ -159,48 +149,20 @@
return v;
}
- public void adjustVolumeByOne(int groupId, boolean up) {
- if (mCarAudioManager == null) {
- Log.e(TAG, "CarAudioManager is null");
- return;
- }
- int current = mCarAudioManager.getGroupVolume(groupId);
- int volume = current + (up ? 1 : -1);
- mCarAudioManager.setGroupVolume(groupId, volume,
- AudioManager.FLAG_SHOW_UI | AudioManager.FLAG_PLAY_SOUND);
- Log.d(TAG, "Set group " + groupId + " volume " + volume);
- }
-
- public void requestFocus(int groupId) {
- mHandler.sendMessage(mHandler.obtainMessage(MSG_REQUEST_FOCUS, groupId));
- }
-
private void initVolumeInfo() {
- int volumeGroupCount = mCarAudioManager.getVolumeGroupCount();
- mVolumeInfos = new VolumeInfo[volumeGroupCount + 1];
- mGroupIdIndexMap.clear();
- mVolumeInfos[0] = new VolumeInfo();
- mVolumeInfos[0].mId = "Group id";
- mVolumeInfos[0].mCurrent = "Current";
- mVolumeInfos[0].mMax = "Max";
-
- int i = 1;
- for (int groupId = 0; groupId < volumeGroupCount; groupId++) {
- mVolumeInfos[i] = new VolumeInfo();
- mVolumeInfos[i].mGroupId = groupId;
- mGroupIdIndexMap.put(groupId, i);
- mVolumeInfos[i].mId = String.valueOf(groupId);
-
-
- int current = mCarAudioManager.getGroupVolume(groupId);
- int max = mCarAudioManager.getGroupMaxVolume(groupId);
- mVolumeInfos[i].mCurrent = String.valueOf(current);
- mVolumeInfos[i].mMax = String.valueOf(max);
-
- Log.d(TAG, groupId + " max: " + mVolumeInfos[i].mMax + " current: "
- + mVolumeInfos[i].mCurrent);
- i++;
+ synchronized (mLock) {
+ List<Integer> audioZoneIds = mCarAudioManager.getAudioZoneIds();
+ for (int index = 0; index < audioZoneIds.size(); index++) {
+ int zoneId = audioZoneIds.get(index);
+ CarAudioZoneVolumeFragment fragment =
+ new CarAudioZoneVolumeFragment(zoneId, mCarAudioManager, mAudioManager);
+ mZonesTabLayout.addTab(mZonesTabLayout.newTab().setText("Audio Zone " + zoneId));
+ mAudioZoneAdapter.addFragment(fragment, "Audio Zone " + zoneId);
+ if (DEBUG) {
+ Log.d(TAG, "Adding audio volume for zone " + zoneId);
+ }
+ mZoneVolumeFragments.put(zoneId, fragment);
+ }
}
- mAdapter.refreshVolumes(mVolumeInfos);
}
}
diff --git a/tests/SecondaryHomeApp/Android.bp b/tests/SecondaryHomeApp/Android.bp
index ce8e763..04da06b 100644
--- a/tests/SecondaryHomeApp/Android.bp
+++ b/tests/SecondaryHomeApp/Android.bp
@@ -22,14 +22,10 @@
],
static_libs: [
- "android.car.userlib",
"androidx.appcompat_appcompat",
- "androidx.recyclerview_recyclerview",
- "androidx.legacy_legacy-support-v4",
"androidx.lifecycle_lifecycle-extensions",
"com.google.android.material_material",
"CarNotificationLib",
- "car-ui-lib"
],
libs: [
diff --git a/tests/SecondaryHomeApp/AndroidManifest.xml b/tests/SecondaryHomeApp/AndroidManifest.xml
index 0a84531..5d22b70 100644
--- a/tests/SecondaryHomeApp/AndroidManifest.xml
+++ b/tests/SecondaryHomeApp/AndroidManifest.xml
@@ -45,6 +45,7 @@
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.SECONDARY_HOME"/>
</intent-filter>
</activity>
<service android:name=".launcher.NotificationListener"
diff --git a/tests/carservice_test/src/com/android/car/audio/CarVolumeGroupTest.java b/tests/carservice_test/src/com/android/car/audio/CarVolumeGroupTest.java
index 58b7f71..cc9ecd3 100644
--- a/tests/carservice_test/src/com/android/car/audio/CarVolumeGroupTest.java
+++ b/tests/carservice_test/src/com/android/car/audio/CarVolumeGroupTest.java
@@ -15,6 +15,8 @@
*/
package com.android.car.audio;
+import static com.google.common.truth.Truth.assertThat;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -22,15 +24,18 @@
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import static org.testng.Assert.expectThrows;
+
+import android.app.ActivityManager;
+import android.car.test.mocks.AbstractExtendedMockitoTestCase;
+import android.os.UserHandle;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.common.primitives.Ints;
import org.junit.Before;
-import org.junit.Rule;
import org.junit.Test;
-import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
@@ -40,22 +45,26 @@
import java.util.Map;
@RunWith(AndroidJUnit4.class)
-public class CarVolumeGroupTest {
+public class CarVolumeGroupTest extends AbstractExtendedMockitoTestCase{
private static final int STEP_VALUE = 2;
private static final int MIN_GAIN = 0;
private static final int MAX_GAIN = 5;
private static final int DEFAULT_GAIN = 0;
+ private static final int TEST_USER_10 = 10;
+ private static final int TEST_USER_11 = 11;
private static final String OTHER_ADDRESS = "other_address";
private static final String MEDIA_DEVICE_ADDRESS = "music";
private static final String NAVIGATION_DEVICE_ADDRESS = "navigation";
- @Rule
- public final ExpectedException thrown = ExpectedException.none();
-
private CarAudioDeviceInfo mMediaDevice;
private CarAudioDeviceInfo mNavigationDevice;
+ @Override
+ protected void onSessionBuilder(CustomMockitoSessionBuilder session) {
+ session.spyStatic(ActivityManager.class);
+ }
+
@Before
public void setUp() {
mMediaDevice = generateCarAudioDeviceInfo(MEDIA_DEVICE_ADDRESS);
@@ -90,9 +99,10 @@
NAVIGATION_DEVICE_ADDRESS, STEP_VALUE + 1,
MIN_GAIN, MAX_GAIN);
- thrown.expect(IllegalArgumentException.class);
- thrown.expectMessage("Gain controls within one group must have same step value");
- carVolumeGroup.bind(CarAudioContext.NAVIGATION, differentStepValueDevice);
+ IllegalArgumentException thrown = expectThrows(IllegalArgumentException.class,
+ () -> carVolumeGroup.bind(CarAudioContext.NAVIGATION, differentStepValueDevice));
+ assertThat(thrown).hasMessageThat()
+ .contains("Gain controls within one group must have same step value");
}
@Test
@@ -153,11 +163,10 @@
carVolumeGroup.bind(CarAudioContext.NAVIGATION, mMediaDevice);
- thrown.expect(IllegalArgumentException.class);
- thrown.expectMessage(
- "Context NAVIGATION has already been bound to " + MEDIA_DEVICE_ADDRESS);
-
- carVolumeGroup.bind(CarAudioContext.NAVIGATION, mMediaDevice);
+ IllegalArgumentException thrown = expectThrows(IllegalArgumentException.class,
+ () -> carVolumeGroup.bind(CarAudioContext.NAVIGATION, mMediaDevice));
+ assertThat(thrown).hasMessageThat()
+ .contains("Context NAVIGATION has already been bound to " + MEDIA_DEVICE_ADDRESS);
}
@Test
@@ -241,20 +250,18 @@
public void setCurrentGainIndex_checksNewGainIsAboveMin() {
CarVolumeGroup carVolumeGroup = testVolumeGroupSetup();
- thrown.expect(IllegalArgumentException.class);
- thrown.expectMessage("Gain out of range (0:5) -2index -1");
-
- carVolumeGroup.setCurrentGainIndex(-1);
+ IllegalArgumentException thrown = expectThrows(IllegalArgumentException.class,
+ () -> carVolumeGroup.setCurrentGainIndex(-1));
+ assertThat(thrown).hasMessageThat().contains("Gain out of range (0:5) -2index -1");
}
@Test
public void setCurrentGainIndex_checksNewGainIsBelowMax() {
CarVolumeGroup carVolumeGroup = testVolumeGroupSetup();
- thrown.expect(IllegalArgumentException.class);
- thrown.expectMessage("Gain out of range (0:5) 6index 3");
-
- carVolumeGroup.setCurrentGainIndex(3);
+ IllegalArgumentException thrown = expectThrows(IllegalArgumentException.class,
+ () -> carVolumeGroup.setCurrentGainIndex(3));
+ assertThat(thrown).hasMessageThat().contains("Gain out of range (0:5) 6index 3");
}
@Test
@@ -280,12 +287,12 @@
public void loadVolumesForUser_setsCurrentGainIndexForUser() {
List<Integer> users = new ArrayList<>();
- users.add(10);
- users.add(11);
+ users.add(TEST_USER_10);
+ users.add(TEST_USER_11);
Map<Integer, Integer> storedGainIndex = new HashMap<>();
- storedGainIndex.put(10, 2);
- storedGainIndex.put(11, 0);
+ storedGainIndex.put(TEST_USER_10, 2);
+ storedGainIndex.put(TEST_USER_11, 0);
CarAudioSettings settings =
generateCarAudioSettings(users, 0 , 0, storedGainIndex);
@@ -294,11 +301,11 @@
CarAudioDeviceInfo deviceInfo = generateCarAudioDeviceInfo(
NAVIGATION_DEVICE_ADDRESS, STEP_VALUE, MIN_GAIN, MAX_GAIN);
carVolumeGroup.bind(CarAudioContext.NAVIGATION, deviceInfo);
- carVolumeGroup.loadVolumesForUser(10);
+ carVolumeGroup.loadVolumesForUser(TEST_USER_10);
assertEquals(2, carVolumeGroup.getCurrentGainIndex());
- carVolumeGroup.loadVolumesForUser(11);
+ carVolumeGroup.loadVolumesForUser(TEST_USER_11);
assertEquals(0, carVolumeGroup.getCurrentGainIndex());
}
@@ -306,7 +313,7 @@
@Test
public void loadUserStoredGainIndex_setsCurrentGainIndexToDefault() {
CarAudioSettings settings =
- generateCarAudioSettings(0, 0 , 0, 10);
+ generateCarAudioSettings(TEST_USER_10, 0, 0, 10);
CarVolumeGroup carVolumeGroup = new CarVolumeGroup(settings, 0, 0);
CarAudioDeviceInfo deviceInfo = generateCarAudioDeviceInfo(
@@ -323,6 +330,50 @@
}
@Test
+ public void setCurrentGainIndex_setsCurrentGainIndexForUser() {
+ List<Integer> users = new ArrayList<>();
+ users.add(TEST_USER_11);
+
+ Map<Integer, Integer> storedGainIndex = new HashMap<>();
+ storedGainIndex.put(TEST_USER_11, 2);
+
+ CarAudioSettings settings =
+ generateCarAudioSettings(users, 0 , 0, storedGainIndex);
+ CarVolumeGroup carVolumeGroup = new CarVolumeGroup(settings, 0, 0);
+
+ CarAudioDeviceInfo deviceInfo = generateCarAudioDeviceInfo(
+ NAVIGATION_DEVICE_ADDRESS, STEP_VALUE, MIN_GAIN, MAX_GAIN);
+ carVolumeGroup.bind(CarAudioContext.NAVIGATION, deviceInfo);
+ carVolumeGroup.loadVolumesForUser(TEST_USER_11);
+
+ carVolumeGroup.setCurrentGainIndex(MIN_GAIN);
+
+ verify(settings).storeVolumeGainIndexForUser(TEST_USER_11, 0, 0, MIN_GAIN);
+ }
+
+ @Test
+ public void setCurrentGainIndex_setsCurrentGainIndexForDefaultUser() {
+ List<Integer> users = new ArrayList<>();
+ users.add(UserHandle.USER_CURRENT);
+
+ Map<Integer, Integer> storedGainIndex = new HashMap<>();
+ storedGainIndex.put(UserHandle.USER_CURRENT, 2);
+
+ CarAudioSettings settings =
+ generateCarAudioSettings(users, 0 , 0, storedGainIndex);
+ CarVolumeGroup carVolumeGroup = new CarVolumeGroup(settings, 0, 0);
+
+ CarAudioDeviceInfo deviceInfo = generateCarAudioDeviceInfo(
+ NAVIGATION_DEVICE_ADDRESS, STEP_VALUE, MIN_GAIN, MAX_GAIN);
+ carVolumeGroup.bind(CarAudioContext.NAVIGATION, deviceInfo);
+
+ carVolumeGroup.setCurrentGainIndex(MIN_GAIN);
+
+ verify(settings)
+ .storeVolumeGainIndexForUser(UserHandle.USER_CURRENT, 0, 0, MIN_GAIN);
+ }
+
+ @Test
public void bind_setsCurrentGainIndexToStoredGainIndex() {
CarAudioSettings settings =
generateCarAudioSettings(0 , 0, 2);
diff --git a/tests/carservice_unit_test/src/android/car/userlib/UserHalHelperTest.java b/tests/carservice_unit_test/src/android/car/userlib/UserHalHelperTest.java
index 6c0b286..33a852a 100644
--- a/tests/carservice_unit_test/src/android/car/userlib/UserHalHelperTest.java
+++ b/tests/carservice_unit_test/src/android/car/userlib/UserHalHelperTest.java
@@ -17,6 +17,9 @@
package android.car.userlib;
import static android.car.userlib.UserHalHelper.USER_IDENTIFICATION_ASSOCIATION_PROPERTY;
+import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationSetValue.ASSOCIATE_CURRENT_USER;
+import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationSetValue.DISASSOCIATE_ALL_USERS;
+import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationSetValue.DISASSOCIATE_CURRENT_USER;
import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType.CUSTOM_1;
import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType.CUSTOM_2;
import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType.CUSTOM_3;
@@ -42,11 +45,16 @@
import android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationValue;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationGetRequest;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationResponse;
+import android.hardware.automotive.vehicle.V2_0.UserIdentificationSetAssociation;
+import android.hardware.automotive.vehicle.V2_0.UserIdentificationSetRequest;
import android.hardware.automotive.vehicle.V2_0.UsersInfo;
import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
+import android.os.SystemClock;
import android.os.UserHandle;
import android.os.UserManager;
+import com.google.common.collect.Range;
+
import org.junit.Test;
public final class UserHalHelperTest {
@@ -164,17 +172,42 @@
}
@Test
- public void testCreatePropRequest() {
- int requestId = 1;
- int requestType = 2;
- int requestProp = 3;
- VehiclePropValue propRequest = UserHalHelper.createPropRequest(requestId, requestType,
- requestProp);
+ public void testCreatePropRequest_withType() {
+ int prop = 1;
+ int requestId = 2;
+ int requestType = 3;
+ long before = SystemClock.elapsedRealtime();
+ VehiclePropValue propRequest = UserHalHelper.createPropRequest(prop, requestId,
+ requestType);
+ long after = SystemClock.elapsedRealtime();
assertThat(propRequest.value.int32Values)
.containsExactly(requestId, requestType)
.inOrder();
- assertThat(propRequest.prop).isEqualTo(requestProp);
+ assertThat(propRequest.prop).isEqualTo(prop);
+ assertThat(propRequest.timestamp).isIn(Range.closed(before, after));
+ }
+
+ @Test
+ public void testCreatePropRequest() {
+ int prop = 1;
+ int requestId = 2;
+ long before = SystemClock.elapsedRealtime();
+ VehiclePropValue propRequest = UserHalHelper.createPropRequest(prop, requestId);
+ long after = SystemClock.elapsedRealtime();
+
+ assertThat(propRequest.value.int32Values)
+ .containsExactly(requestId)
+ .inOrder();
+ assertThat(propRequest.prop).isEqualTo(prop);
+ assertThat(propRequest.timestamp).isIn(Range.closed(before, after));
+ }
+
+ @Test
+ public void testAddUsersInfo_nullProp() {
+ UsersInfo infos = new UsersInfo();
+
+ assertThrows(NullPointerException.class, () -> UserHalHelper.addUsersInfo(null, infos));
}
@Test
@@ -223,7 +256,39 @@
}
@Test
- public void testVsValidUserIdentificationAssociationType_valid() {
+ public void testAddUserInfo_nullProp() {
+ android.hardware.automotive.vehicle.V2_0.UserInfo userInfo =
+ new android.hardware.automotive.vehicle.V2_0.UserInfo();
+
+ assertThrows(NullPointerException.class, () -> UserHalHelper.addUserInfo(null, userInfo));
+ }
+
+ @Test
+ public void testAddUserInfo_nullCurrentUser() {
+ VehiclePropValue prop = new VehiclePropValue();
+
+ assertThrows(NullPointerException.class, () -> UserHalHelper.addUserInfo(prop, null));
+ }
+
+ @Test
+ public void testAddUserInfo_success() {
+ VehiclePropValue propRequest = new VehiclePropValue();
+ propRequest.value.int32Values.add(99);
+
+ android.hardware.automotive.vehicle.V2_0.UserInfo userInfo =
+ new android.hardware.automotive.vehicle.V2_0.UserInfo();
+ userInfo.userId = 42;
+ userInfo.flags = 1;
+
+ UserHalHelper.addUserInfo(propRequest, userInfo);
+
+ assertThat(propRequest.value.int32Values)
+ .containsExactly(99, 42, 1)
+ .inOrder();
+ }
+
+ @Test
+ public void testIsValidUserIdentificationAssociationType_valid() {
assertThat(UserHalHelper.isValidUserIdentificationAssociationType(KEY_FOB)).isTrue();
assertThat(UserHalHelper.isValidUserIdentificationAssociationType(CUSTOM_1)).isTrue();
assertThat(UserHalHelper.isValidUserIdentificationAssociationType(CUSTOM_2)).isTrue();
@@ -253,6 +318,21 @@
}
@Test
+ public void testIsValidUserIdentificationAssociationSetValue_valid() {
+ assertThat(UserHalHelper
+ .isValidUserIdentificationAssociationSetValue(ASSOCIATE_CURRENT_USER)).isTrue();
+ assertThat(UserHalHelper
+ .isValidUserIdentificationAssociationSetValue(DISASSOCIATE_CURRENT_USER)).isTrue();
+ assertThat(UserHalHelper
+ .isValidUserIdentificationAssociationSetValue(DISASSOCIATE_ALL_USERS)).isTrue();
+ }
+
+ @Test
+ public void testIsValidUserIdentificationAssociationSetValue_invalid() {
+ assertThat(UserHalHelper.isValidUserIdentificationAssociationSetValue(0)).isFalse();
+ }
+
+ @Test
public void testUserIdentificationGetRequestToVehiclePropValue_null() {
assertThrows(NullPointerException.class,
() -> UserHalHelper.toVehiclePropValue((UserIdentificationGetRequest) null));
@@ -261,6 +341,7 @@
@Test
public void testUserIdentificationGetRequestToVehiclePropValue_emptyRequest() {
UserIdentificationGetRequest request = new UserIdentificationGetRequest();
+
assertThrows(IllegalArgumentException.class,
() -> UserHalHelper.toVehiclePropValue(request));
}
@@ -269,6 +350,7 @@
public void testUserIdentificationGetRequestToVehiclePropValue_wrongNumberOfAssociations() {
UserIdentificationGetRequest request = new UserIdentificationGetRequest();
request.numberAssociationTypes = 1;
+
assertThrows(IllegalArgumentException.class,
() -> UserHalHelper.toVehiclePropValue(request));
}
@@ -278,6 +360,19 @@
UserIdentificationGetRequest request = new UserIdentificationGetRequest();
request.numberAssociationTypes = 1;
request.associationTypes.add(CUSTOM_4 + 1);
+
+ assertThrows(IllegalArgumentException.class,
+ () -> UserHalHelper.toVehiclePropValue(request));
+ }
+
+ @Test
+ public void testUserIdentificationGetRequestToVehiclePropValue_missingRequestId() {
+ UserIdentificationGetRequest request = new UserIdentificationGetRequest();
+ request.userInfo.userId = 42;
+ request.userInfo.flags = 108;
+ request.numberAssociationTypes = 1;
+ request.associationTypes.add(KEY_FOB);
+
assertThrows(IllegalArgumentException.class,
() -> UserHalHelper.toVehiclePropValue(request));
}
@@ -285,6 +380,7 @@
@Test
public void testUserIdentificationGetRequestToVehiclePropValue_ok() {
UserIdentificationGetRequest request = new UserIdentificationGetRequest();
+ request.requestId = 1;
request.userInfo.userId = 42;
request.userInfo.flags = 108;
request.numberAssociationTypes = 2;
@@ -295,67 +391,77 @@
assertWithMessage("wrong prop on %s", propValue).that(propValue.prop)
.isEqualTo(USER_IDENTIFICATION_ASSOCIATION_PROPERTY);
assertWithMessage("wrong int32values on %s", propValue).that(propValue.value.int32Values)
- .containsExactly(42, 108, 2, KEY_FOB, CUSTOM_1).inOrder();
+ .containsExactly(1, 42, 108, 2, KEY_FOB, CUSTOM_1).inOrder();
}
@Test
- public void testToUserIdentificationGetResponse_null() {
+ public void testToUserIdentificationResponse_null() {
assertThrows(NullPointerException.class,
- () -> UserHalHelper.toUserIdentificationGetResponse(null));
+ () -> UserHalHelper.toUserIdentificationResponse(null));
}
@Test
public void testToUserIdentificationGetResponse_invalidPropType() {
VehiclePropValue prop = new VehiclePropValue();
+
assertThrows(IllegalArgumentException.class,
- () -> UserHalHelper.toUserIdentificationGetResponse(prop));
+ () -> UserHalHelper.toUserIdentificationResponse(prop));
}
@Test
- public void testToUserIdentificationGetResponse_invalidSize() {
+ public void testToUserIdentificationResponse_invalidSize() {
+ VehiclePropValue prop = new VehiclePropValue();
+ prop.prop = UserHalHelper.USER_IDENTIFICATION_ASSOCIATION_PROPERTY;
+ // need at least 4: request_id, number associations, type1, value1
+ prop.value.int32Values.add(1);
+ prop.value.int32Values.add(2);
+ prop.value.int32Values.add(3);
+
+ assertThrows(IllegalArgumentException.class,
+ () -> UserHalHelper.toUserIdentificationResponse(prop));
+ }
+
+ @Test
+ public void testToUserIdentificationResponse_invalidRequest() {
VehiclePropValue prop = new VehiclePropValue();
prop.prop = UserHalHelper.USER_IDENTIFICATION_ASSOCIATION_PROPERTY;
prop.value.int32Values.add(0);
+
assertThrows(IllegalArgumentException.class,
- () -> UserHalHelper.toUserIdentificationGetResponse(prop));
+ () -> UserHalHelper.toUserIdentificationResponse(prop));
}
@Test
- public void testToUserIdentificationGetResponse_sizeMismatch() {
+ public void testToUserIdentificationResponse_invalidType() {
VehiclePropValue prop = new VehiclePropValue();
prop.prop = UserHalHelper.USER_IDENTIFICATION_ASSOCIATION_PROPERTY;
- prop.value.int32Values.add(1); // number of associations
- prop.value.int32Values.add(KEY_FOB);
- assertThrows(IllegalArgumentException.class,
- () -> UserHalHelper.toUserIdentificationGetResponse(prop));
- }
-
- @Test
- public void testToUserIdentificationGetResponse_invalidType() {
- VehiclePropValue prop = new VehiclePropValue();
- prop.prop = UserHalHelper.USER_IDENTIFICATION_ASSOCIATION_PROPERTY;
+ prop.value.int32Values.add(42); // request id
prop.value.int32Values.add(1); // number of associations
prop.value.int32Values.add(CUSTOM_4 + 1);
prop.value.int32Values.add(ASSOCIATED_ANOTHER_USER);
+
assertThrows(IllegalArgumentException.class,
- () -> UserHalHelper.toUserIdentificationGetResponse(prop));
+ () -> UserHalHelper.toUserIdentificationResponse(prop));
}
@Test
- public void testToUserIdentificationGetResponse_invalidValue() {
+ public void testToUserIdentificationResponse_invalidValue() {
VehiclePropValue prop = new VehiclePropValue();
prop.prop = UserHalHelper.USER_IDENTIFICATION_ASSOCIATION_PROPERTY;
+ prop.value.int32Values.add(42); // request id
prop.value.int32Values.add(1); // number of associations
prop.value.int32Values.add(KEY_FOB);
prop.value.int32Values.add(0);
+
assertThrows(IllegalArgumentException.class,
- () -> UserHalHelper.toUserIdentificationGetResponse(prop));
+ () -> UserHalHelper.toUserIdentificationResponse(prop));
}
@Test
- public void testToUserIdentificationGetResponse_ok() {
+ public void testToUserIdentificationResponse_ok() {
VehiclePropValue prop = new VehiclePropValue();
prop.prop = UserHalHelper.USER_IDENTIFICATION_ASSOCIATION_PROPERTY;
+ prop.value.int32Values.add(42); // request id
prop.value.int32Values.add(3); // number of associations
prop.value.int32Values.add(KEY_FOB);
prop.value.int32Values.add(ASSOCIATED_ANOTHER_USER);
@@ -364,10 +470,13 @@
prop.value.int32Values.add(CUSTOM_2);
prop.value.int32Values.add(NOT_ASSOCIATED_ANY_USER);
prop.value.stringValue = "D'OH!";
- UserIdentificationResponse response = UserHalHelper.toUserIdentificationGetResponse(prop);
+
+ UserIdentificationResponse response = UserHalHelper.toUserIdentificationResponse(prop);
+
+ assertWithMessage("Wrong request id on %s", response)
+ .that(response.requestId).isEqualTo(42);
assertWithMessage("Wrong number of associations on %s", response)
.that(response.numberAssociation).isEqualTo(3);
-
assertAssociation(response, 0, KEY_FOB, ASSOCIATED_ANOTHER_USER);
assertAssociation(response, 1, CUSTOM_1, ASSOCIATED_CURRENT_USER);
assertAssociation(response, 2, CUSTOM_2, NOT_ASSOCIATED_ANY_USER);
@@ -375,6 +484,96 @@
.that(response.errorMessage).isEqualTo("D'OH!");
}
+ @Test
+ public void testUserIdentificationSetRequestToVehiclePropValue_null() {
+ assertThrows(NullPointerException.class,
+ () -> UserHalHelper.toVehiclePropValue((UserIdentificationSetRequest) null));
+ }
+
+ @Test
+ public void testUserIdentificationSetRequestToVehiclePropValue_emptyRequest() {
+ UserIdentificationSetRequest request = new UserIdentificationSetRequest();
+
+ assertThrows(IllegalArgumentException.class,
+ () -> UserHalHelper.toVehiclePropValue(request));
+ }
+
+ @Test
+ public void testUserIdentificationSetRequestToVehiclePropValue_wrongNumberOfAssociations() {
+ UserIdentificationSetRequest request = new UserIdentificationSetRequest();
+ request.numberAssociations = 1;
+
+ assertThrows(IllegalArgumentException.class,
+ () -> UserHalHelper.toVehiclePropValue(request));
+ }
+
+ @Test
+ public void testUserIdentificationSetRequestToVehiclePropValue_invalidType() {
+ UserIdentificationSetRequest request = new UserIdentificationSetRequest();
+ request.numberAssociations = 1;
+ UserIdentificationSetAssociation association1 = new UserIdentificationSetAssociation();
+ request.associations.add(association1);
+ association1.type = CUSTOM_4 + 1;
+ association1.value = ASSOCIATE_CURRENT_USER;
+
+ assertThrows(IllegalArgumentException.class,
+ () -> UserHalHelper.toVehiclePropValue(request));
+ }
+
+ @Test
+ public void testUserIdentificationSetRequestToVehiclePropValue_invalidValue() {
+ UserIdentificationSetRequest request = new UserIdentificationSetRequest();
+ request.numberAssociations = 1;
+ UserIdentificationSetAssociation association1 = new UserIdentificationSetAssociation();
+ request.associations.add(association1);
+ association1.type = KEY_FOB;
+ association1.value = -1;
+
+ assertThrows(IllegalArgumentException.class,
+ () -> UserHalHelper.toVehiclePropValue(request));
+ }
+
+ @Test
+ public void testUserIdentificationSetRequestToVehiclePropValue_missingRequestId() {
+ UserIdentificationSetRequest request = new UserIdentificationSetRequest();
+ request.userInfo.userId = 42;
+ request.userInfo.flags = 108;
+ request.numberAssociations = 1;
+ UserIdentificationSetAssociation association1 = new UserIdentificationSetAssociation();
+ association1.type = KEY_FOB;
+ association1.value = ASSOCIATE_CURRENT_USER;
+ request.associations.add(association1);
+
+ assertThrows(IllegalArgumentException.class,
+ () -> UserHalHelper.toVehiclePropValue(request));
+ }
+
+ @Test
+ public void testUserIdentificationSetRequestToVehiclePropValue_ok() {
+ UserIdentificationSetRequest request = new UserIdentificationSetRequest();
+ request.requestId = 1;
+ request.userInfo.userId = 42;
+ request.userInfo.flags = 108;
+ request.numberAssociations = 2;
+ UserIdentificationSetAssociation association1 = new UserIdentificationSetAssociation();
+ association1.type = KEY_FOB;
+ association1.value = ASSOCIATE_CURRENT_USER;
+ request.associations.add(association1);
+ UserIdentificationSetAssociation association2 = new UserIdentificationSetAssociation();
+ association2.type = CUSTOM_1;
+ association2.value = DISASSOCIATE_CURRENT_USER;
+ request.associations.add(association2);
+
+ VehiclePropValue propValue = UserHalHelper.toVehiclePropValue(request);
+ assertWithMessage("wrong prop on %s", propValue).that(propValue.prop)
+ .isEqualTo(USER_IDENTIFICATION_ASSOCIATION_PROPERTY);
+ assertWithMessage("wrong int32values on %s", propValue).that(propValue.value.int32Values)
+ .containsExactly(1, 42, 108, 2,
+ KEY_FOB, ASSOCIATE_CURRENT_USER,
+ CUSTOM_1, DISASSOCIATE_CURRENT_USER)
+ .inOrder();
+ }
+
private void assertAssociation(@NonNull UserIdentificationResponse response, int index,
int expectedType, int expectedValue) {
UserIdentificationAssociation actualAssociation = response.associations.get(index);
@@ -389,5 +588,4 @@
+ UserIdentificationAssociationValue.toString(actualAssociation.value));
}
}
-
}
diff --git a/tests/carservice_unit_test/src/com/android/car/audio/CarAudioSettingsUnitTest.java b/tests/carservice_unit_test/src/com/android/car/audio/CarAudioSettingsUnitTest.java
index 89fd6ac..cf1b7fd 100644
--- a/tests/carservice_unit_test/src/com/android/car/audio/CarAudioSettingsUnitTest.java
+++ b/tests/carservice_unit_test/src/com/android/car/audio/CarAudioSettingsUnitTest.java
@@ -18,6 +18,7 @@
import static com.google.common.truth.Truth.assertThat;
+import android.car.media.CarAudioManager;
import android.car.settings.CarSettings;
import android.car.test.mocks.AbstractExtendedMockitoTestCase;
import android.content.ContentResolver;
@@ -33,6 +34,10 @@
public class CarAudioSettingsUnitTest extends AbstractExtendedMockitoTestCase {
private static final int TEST_USER_ID_1 = 11;
+ private static final int TEST_ZONE_ID = CarAudioManager.PRIMARY_AUDIO_ZONE;
+ private static final int TEST_GROUP_ID = 0;
+ private static final int TEST_GAIN_INDEX = 10;
+ private static final String TEST_GAIN_INDEX_KEY = "android.car.VOLUME_GROUP/0";
@Mock
@@ -61,6 +66,25 @@
.isTrue();
}
+ @Test
+ public void getStoredVolumeGainIndexForUser_returnsSavedValue() {
+ setStoredVolumeGainIndexForUser(TEST_GAIN_INDEX);
+
+ assertThat(mCarAudioSettings.getStoredVolumeGainIndexForUser(TEST_USER_ID_1, TEST_ZONE_ID,
+ TEST_GROUP_ID)).isEqualTo(TEST_GAIN_INDEX);
+ }
+
+ @Test
+ public void storedVolumeGainIndexForUser_savesValue() {
+ mCarAudioSettings.storeVolumeGainIndexForUser(TEST_USER_ID_1, TEST_ZONE_ID,
+ TEST_GROUP_ID, TEST_GAIN_INDEX);
+ assertThat(getSettingsInt(TEST_GAIN_INDEX_KEY)).isEqualTo(TEST_GAIN_INDEX);
+ }
+
+ private void setStoredVolumeGainIndexForUser(int gainIndexForUser) {
+ putSettingsInt(TEST_GAIN_INDEX_KEY, gainIndexForUser);
+ }
+
private void setRejectNavigationOnCallSettingsValues(int settingsValue) {
putSettingsInt(CarSettings.Secure.KEY_AUDIO_FOCUS_NAVIGATION_REJECTED_DURING_CALL,
settingsValue);
diff --git a/tests/carservice_unit_test/src/com/android/car/hal/UserHalServiceTest.java b/tests/carservice_unit_test/src/com/android/car/hal/UserHalServiceTest.java
index 71e51f3..67a9b6f 100644
--- a/tests/carservice_unit_test/src/com/android/car/hal/UserHalServiceTest.java
+++ b/tests/carservice_unit_test/src/com/android/car/hal/UserHalServiceTest.java
@@ -24,6 +24,7 @@
import static android.car.test.util.VehicleHalTestingHelper.newConfig;
import static android.car.test.util.VehicleHalTestingHelper.newSubscribableConfig;
import static android.hardware.automotive.vehicle.V2_0.InitialUserInfoRequestType.COLD_BOOT;
+import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationSetValue.ASSOCIATE_CURRENT_USER;
import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType.CUSTOM_1;
import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType.KEY_FOB;
import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationValue.ASSOCIATED_CURRENT_USER;
@@ -32,12 +33,17 @@
import static com.google.common.truth.Truth.assertWithMessage;
import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.testng.Assert.assertThrows;
+import android.annotation.NonNull;
import android.car.hardware.property.VehicleHalStatusCode;
import android.car.userlib.HalCallback;
import android.car.userlib.UserHalHelper;
@@ -50,16 +56,24 @@
import android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociation;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationGetRequest;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationResponse;
+import android.hardware.automotive.vehicle.V2_0.UserIdentificationSetAssociation;
+import android.hardware.automotive.vehicle.V2_0.UserIdentificationSetRequest;
import android.hardware.automotive.vehicle.V2_0.UserInfo;
import android.hardware.automotive.vehicle.V2_0.UsersInfo;
import android.hardware.automotive.vehicle.V2_0.VehiclePropConfig;
import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
+import android.os.Handler;
+import android.os.Looper;
import android.os.ServiceSpecificException;
import android.os.SystemClock;
import android.os.UserHandle;
import android.util.Log;
import android.util.Pair;
+import com.android.car.CarLocalServices;
+import com.android.car.user.CarUserService;
+
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -98,26 +112,36 @@
private static final int CALLBACK_TIMEOUT_TIMEOUT = TIMEOUT_MS + 450;
// Used when crafting a request property - the real value will be set by the mock.
- private static final int REQUEST_ID_PLACE_HOLDER = 42;
+ private static final int REQUEST_ID_PLACE_HOLDER = 1111;
+
+ private static final int DEFAULT_REQUEST_ID = 2222;
+
+ private static final int DEFAULT_USER_ID = 333;
+ private static final int DEFAULT_USER_FLAGS = 444;
private static final int INITIAL_USER_INFO_RESPONSE_ACTION = 108;
+
@Mock
private VehicleHal mVehicleHal;
+ @Mock
+ private CarUserService mCarUserService;
+
+ private final Handler mHandler = new Handler(Looper.getMainLooper());
private final UserInfo mUser0 = new UserInfo();
private final UserInfo mUser10 = new UserInfo();
private final UsersInfo mUsersInfo = new UsersInfo();
+ // Must be a spy so we can mock getNextRequestId()
private UserHalService mUserHalService;
@Before
public void setFixtures() {
- mUserHalService = new UserHalService(mVehicleHal);
- mUserHalService.takeProperties(Arrays.asList(
- newSubscribableConfig(INITIAL_USER_INFO),
- newSubscribableConfig(SWITCH_USER)));
+ mUserHalService = spy(new UserHalService(mVehicleHal, mHandler));
+ // Needs at least one property, otherwise isSupported() will return false
+ mUserHalService.takeProperties(Arrays.asList(newSubscribableConfig(INITIAL_USER_INFO)));
mUser0.userId = 0;
mUser0.flags = 100;
@@ -129,6 +153,13 @@
mUsersInfo.existingUsers = new ArrayList<>(2);
mUsersInfo.existingUsers.add(mUser0);
mUsersInfo.existingUsers.add(mUser10);
+
+ CarLocalServices.addService(CarUserService.class, mCarUserService);
+ }
+
+ @After
+ public void clearFixtures() {
+ CarLocalServices.removeServiceForTest(CarUserService.class);
}
@Test
@@ -243,8 +274,8 @@
@Test
public void testGetUserInfo_halReplyWithWrongRequestId() throws Exception {
- VehiclePropValue propResponse = UserHalHelper.createPropRequest(REQUEST_ID_PLACE_HOLDER,
- INITIAL_USER_INFO_RESPONSE_ACTION, INITIAL_USER_INFO);
+ VehiclePropValue propResponse = UserHalHelper.createPropRequest(INITIAL_USER_INFO,
+ REQUEST_ID_PLACE_HOLDER, INITIAL_USER_INFO_RESPONSE_ACTION);
replySetPropertyWithOnChangeEvent(INITIAL_USER_INFO, propResponse,
/* rightRequestId= */ false);
@@ -261,8 +292,8 @@
@Test
public void testGetUserInfo_halReturnedInvalidAction() throws Exception {
- VehiclePropValue propResponse = UserHalHelper.createPropRequest(REQUEST_ID_PLACE_HOLDER,
- INITIAL_USER_INFO_RESPONSE_ACTION, INITIAL_USER_INFO);
+ VehiclePropValue propResponse = UserHalHelper.createPropRequest(INITIAL_USER_INFO,
+ REQUEST_ID_PLACE_HOLDER, INITIAL_USER_INFO_RESPONSE_ACTION);
AtomicReference<VehiclePropValue> reqCaptor = replySetPropertyWithOnChangeEvent(
INITIAL_USER_INFO, propResponse, /* rightRequestId= */ true);
@@ -284,8 +315,8 @@
@Test
public void testGetUserInfo_successDefault() throws Exception {
- VehiclePropValue propResponse = UserHalHelper.createPropRequest(REQUEST_ID_PLACE_HOLDER,
- InitialUserInfoResponseAction.DEFAULT, INITIAL_USER_INFO);
+ VehiclePropValue propResponse = UserHalHelper.createPropRequest(INITIAL_USER_INFO,
+ REQUEST_ID_PLACE_HOLDER, InitialUserInfoResponseAction.DEFAULT);
AtomicReference<VehiclePropValue> reqCaptor = replySetPropertyWithOnChangeEvent(
INITIAL_USER_INFO, propResponse, /* rightRequestId= */ true);
@@ -313,8 +344,8 @@
@Test
public void testGetUserInfo_successSwitchUser() throws Exception {
int userIdToSwitch = 42;
- VehiclePropValue propResponse = UserHalHelper.createPropRequest(REQUEST_ID_PLACE_HOLDER,
- InitialUserInfoResponseAction.SWITCH, INITIAL_USER_INFO);
+ VehiclePropValue propResponse = UserHalHelper.createPropRequest(INITIAL_USER_INFO,
+ REQUEST_ID_PLACE_HOLDER, InitialUserInfoResponseAction.SWITCH);
propResponse.value.int32Values.add(userIdToSwitch);
AtomicReference<VehiclePropValue> reqCaptor = replySetPropertyWithOnChangeEvent(
@@ -344,8 +375,8 @@
public void testGetUserInfo_successCreateUser() throws Exception {
int newUserFlags = 108;
String newUserName = "Groot";
- VehiclePropValue propResponse = UserHalHelper.createPropRequest(REQUEST_ID_PLACE_HOLDER,
- InitialUserInfoResponseAction.CREATE, INITIAL_USER_INFO);
+ VehiclePropValue propResponse = UserHalHelper.createPropRequest(INITIAL_USER_INFO,
+ REQUEST_ID_PLACE_HOLDER, InitialUserInfoResponseAction.CREATE);
propResponse.value.int32Values.add(newUserFlags);
propResponse.value.stringValue = newUserName;
@@ -434,8 +465,8 @@
@Test
public void testSwitchUser_halReplyWithWrongRequestId() throws Exception {
- VehiclePropValue propResponse = UserHalHelper.createPropRequest(REQUEST_ID_PLACE_HOLDER,
- InitialUserInfoResponseAction.SWITCH, SWITCH_USER);
+ VehiclePropValue propResponse = UserHalHelper.createPropRequest(SWITCH_USER,
+ REQUEST_ID_PLACE_HOLDER, InitialUserInfoResponseAction.SWITCH);
replySetPropertyWithOnChangeEvent(SWITCH_USER, propResponse,
/* rightRequestId= */ false);
@@ -451,8 +482,8 @@
@Test
public void testSwitchUser_halReturnedInvalidMessageType() throws Exception {
- VehiclePropValue propResponse = UserHalHelper.createPropRequest(REQUEST_ID_PLACE_HOLDER,
- SwitchUserMessageType.VEHICLE_REQUEST, SWITCH_USER);
+ VehiclePropValue propResponse = UserHalHelper.createPropRequest(SWITCH_USER,
+ REQUEST_ID_PLACE_HOLDER, SwitchUserMessageType.LEGACY_ANDROID_SWITCH);
propResponse.value.int32Values.add(SwitchUserStatus.SUCCESS);
AtomicReference<VehiclePropValue> reqCaptor = replySetPropertyWithOnChangeEvent(
@@ -474,8 +505,8 @@
@Test
public void testUserSwitch_success() throws Exception {
- VehiclePropValue propResponse = UserHalHelper.createPropRequest(REQUEST_ID_PLACE_HOLDER,
- SwitchUserMessageType.VEHICLE_RESPONSE, SWITCH_USER);
+ VehiclePropValue propResponse = UserHalHelper.createPropRequest(SWITCH_USER,
+ REQUEST_ID_PLACE_HOLDER, SwitchUserMessageType.VEHICLE_RESPONSE);
propResponse.value.int32Values.add(SwitchUserStatus.SUCCESS);
AtomicReference<VehiclePropValue> reqCaptor = replySetPropertyWithOnChangeEvent(
@@ -499,8 +530,8 @@
@Test
public void testUserSwitch_failure() throws Exception {
- VehiclePropValue propResponse = UserHalHelper.createPropRequest(REQUEST_ID_PLACE_HOLDER,
- SwitchUserMessageType.VEHICLE_RESPONSE, SWITCH_USER);
+ VehiclePropValue propResponse = UserHalHelper.createPropRequest(SWITCH_USER,
+ REQUEST_ID_PLACE_HOLDER, SwitchUserMessageType.VEHICLE_RESPONSE);
propResponse.value.int32Values.add(SwitchUserStatus.FAILURE);
AtomicReference<VehiclePropValue> reqCaptor = replySetPropertyWithOnChangeEvent(
@@ -542,8 +573,8 @@
@Test
public void testSwitchUser_halReturnedInvalidStatus() throws Exception {
- VehiclePropValue propResponse = UserHalHelper.createPropRequest(REQUEST_ID_PLACE_HOLDER,
- SwitchUserMessageType.VEHICLE_RESPONSE, SWITCH_USER);
+ VehiclePropValue propResponse = UserHalHelper.createPropRequest(SWITCH_USER,
+ REQUEST_ID_PLACE_HOLDER, SwitchUserMessageType.VEHICLE_RESPONSE);
propResponse.value.int32Values.add(/*status =*/ 110); // an invalid status
AtomicReference<VehiclePropValue> reqCaptor = replySetPropertyWithOnChangeEvent(
@@ -564,6 +595,35 @@
}
@Test
+ public void testUserSwitch_OEMRequest_success() throws Exception {
+ int requestId = -4;
+ int targetUserId = 11;
+ VehiclePropValue propResponse = UserHalHelper.createPropRequest(SWITCH_USER,
+ requestId, SwitchUserMessageType.VEHICLE_REQUEST);
+
+ propResponse.value.int32Values.add(targetUserId);
+
+ mUserHalService.onHalEvents(Arrays.asList(propResponse));
+ waitForHandler();
+
+ verify(mCarUserService).switchAndroidUserFromHal(requestId, targetUserId);
+ }
+
+ @Test
+ public void testUserSwitch_OEMRequest_failure_positiveRequestId() throws Exception {
+ int requestId = 4;
+ int targetUserId = 11;
+ VehiclePropValue propResponse = UserHalHelper.createPropRequest(SWITCH_USER,
+ requestId, SwitchUserMessageType.VEHICLE_REQUEST);
+ propResponse.value.int32Values.add(targetUserId);
+
+ mUserHalService.onHalEvents(Arrays.asList(propResponse));
+ waitForHandler();
+
+ verify(mCarUserService, never()).switchAndroidUserFromHal(anyInt(), anyInt());
+ }
+
+ @Test
public void testPostSwitchResponse_noUsersInfo() {
assertThrows(NullPointerException.class,
() -> mUserHalService.postSwitchResponse(42, mUser10, null));
@@ -615,104 +675,308 @@
@Test
public void testGetUserAssociation_invalidResponse() {
- VehiclePropValue mockedResponse = new VehiclePropValue();
- mockedResponse.prop = USER_IDENTIFICATION_ASSOCIATION;
- mockedResponse.value.int32Values.add(1); // 1 associations
- mockedResponse.value.int32Values.add(KEY_FOB); // type only, it's missing value
- when(mVehicleHal.get(
- isPropertyWithValues(USER_IDENTIFICATION_ASSOCIATION, 42, 108, 1, KEY_FOB)))
- .thenReturn(mockedResponse);
-
- UserIdentificationGetRequest request = new UserIdentificationGetRequest();
- request.userInfo.userId = 42;
- request.userInfo.flags = 108;
- request.numberAssociationTypes = 1;
- request.associationTypes.add(KEY_FOB);
+ VehiclePropValue propResponse = new VehiclePropValue();
+ propResponse.prop = USER_IDENTIFICATION_ASSOCIATION;
+ propResponse.value.int32Values.add(DEFAULT_REQUEST_ID);
+ propResponse.value.int32Values.add(1); // 1 associations
+ propResponse.value.int32Values.add(KEY_FOB); // type only, it's missing value
+ UserIdentificationGetRequest request = replyToValidGetUserIdentificationRequest(
+ propResponse);
assertThat(mUserHalService.getUserAssociation(request)).isNull();
}
@Test
public void testGetUserAssociation_nullResponse() {
- VehiclePropValue mockedResponse = new VehiclePropValue();
- mockedResponse.prop = USER_IDENTIFICATION_ASSOCIATION;
- mockedResponse.value.int32Values.add(1); // 1 association
- mockedResponse.value.int32Values.add(KEY_FOB);
- mockedResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER);
- when(mVehicleHal.get(
- isPropertyWithValues(USER_IDENTIFICATION_ASSOCIATION, 42, 108, 1, KEY_FOB)))
- .thenReturn(null);
-
- UserIdentificationGetRequest request = new UserIdentificationGetRequest();
- request.userInfo.userId = 42;
- request.userInfo.flags = 108;
- request.numberAssociationTypes = 1;
- request.associationTypes.add(KEY_FOB);
+ UserIdentificationGetRequest request = replyToValidGetUserIdentificationRequest(null);
assertThat(mUserHalService.getUserAssociation(request)).isNull();
+
+ verifyValidGetUserIdentificationRequestMade();
}
@Test
public void testGetUserAssociation_wrongNumberOfAssociationsOnResponse() {
- VehiclePropValue mockedResponse = new VehiclePropValue();
- mockedResponse.prop = USER_IDENTIFICATION_ASSOCIATION;
- mockedResponse.value.int32Values.add(2); // 2 associations
- mockedResponse.value.int32Values.add(KEY_FOB);
- mockedResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER);
- mockedResponse.value.int32Values.add(CUSTOM_1);
- mockedResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER);
- when(mVehicleHal.get(
- isPropertyWithValues(USER_IDENTIFICATION_ASSOCIATION, 42, 108, 1, KEY_FOB)))
- .thenReturn(mockedResponse);
-
- UserIdentificationGetRequest request = new UserIdentificationGetRequest();
- request.userInfo.userId = 42;
- request.userInfo.flags = 108;
- request.numberAssociationTypes = 1;
- request.associationTypes.add(KEY_FOB);
+ VehiclePropValue propResponse = new VehiclePropValue();
+ propResponse.prop = USER_IDENTIFICATION_ASSOCIATION;
+ propResponse.value.int32Values.add(DEFAULT_REQUEST_ID);
+ propResponse.value.int32Values.add(2); // 2 associations
+ propResponse.value.int32Values.add(KEY_FOB);
+ propResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER);
+ propResponse.value.int32Values.add(CUSTOM_1);
+ propResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER);
+ UserIdentificationGetRequest request = replyToValidGetUserIdentificationRequest(
+ propResponse);
assertThat(mUserHalService.getUserAssociation(request)).isNull();
+
+ verifyValidGetUserIdentificationRequestMade();
}
@Test
public void testGetUserAssociation_typesOnResponseMismatchTypesOnRequest() {
- VehiclePropValue mockedResponse = new VehiclePropValue();
- mockedResponse.prop = USER_IDENTIFICATION_ASSOCIATION;
- mockedResponse.value.int32Values.add(1);
- mockedResponse.value.int32Values.add(CUSTOM_1);
- mockedResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER);
- when(mVehicleHal.get(
- isPropertyWithValues(USER_IDENTIFICATION_ASSOCIATION, 42, 108, 1, KEY_FOB)))
- .thenReturn(mockedResponse);
-
- UserIdentificationGetRequest request = new UserIdentificationGetRequest();
- request.userInfo.userId = 42;
- request.userInfo.flags = 108;
- request.numberAssociationTypes = 1;
- request.associationTypes.add(KEY_FOB);
+ VehiclePropValue propResponse = new VehiclePropValue();
+ propResponse.prop = USER_IDENTIFICATION_ASSOCIATION;
+ propResponse.value.int32Values.add(DEFAULT_REQUEST_ID);
+ propResponse.value.int32Values.add(1); // 1 association
+ propResponse.value.int32Values.add(CUSTOM_1);
+ propResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER);
+ UserIdentificationGetRequest request = replyToValidGetUserIdentificationRequest(
+ propResponse);
assertThat(mUserHalService.getUserAssociation(request)).isNull();
+
+ verifyValidGetUserIdentificationRequestMade();
+ }
+
+ @Test
+ public void testGetUserAssociation_requestIdMismatch() {
+ VehiclePropValue propResponse = new VehiclePropValue();
+ propResponse.prop = USER_IDENTIFICATION_ASSOCIATION;
+ propResponse.value.int32Values.add(DEFAULT_REQUEST_ID + 1);
+ propResponse.value.int32Values.add(1); // 1 association
+ propResponse.value.int32Values.add(KEY_FOB);
+ propResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER);
+ UserIdentificationGetRequest request = replyToValidGetUserIdentificationRequest(
+ propResponse);
+
+ assertThat(mUserHalService.getUserAssociation(request)).isNull();
+
+ verifyValidGetUserIdentificationRequestMade();
}
@Test
public void testGetUserAssociation_ok() {
- VehiclePropValue mockedResponse = new VehiclePropValue();
- mockedResponse.prop = USER_IDENTIFICATION_ASSOCIATION;
- mockedResponse.value.int32Values.add(1); // 1 association
- mockedResponse.value.int32Values.add(KEY_FOB);
- mockedResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER);
- when(mVehicleHal.get(
- isPropertyWithValues(USER_IDENTIFICATION_ASSOCIATION, 42, 108, 1, KEY_FOB)))
- .thenReturn(mockedResponse);
+ VehiclePropValue propResponse = new VehiclePropValue();
+ propResponse.prop = USER_IDENTIFICATION_ASSOCIATION;
+ propResponse.value.int32Values.add(DEFAULT_REQUEST_ID);
+ propResponse.value.int32Values.add(1); // 1 association
+ propResponse.value.int32Values.add(KEY_FOB);
+ propResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER);
+ UserIdentificationGetRequest request = replyToValidGetUserIdentificationRequest(
+ propResponse);
- UserIdentificationGetRequest request = new UserIdentificationGetRequest();
- request.userInfo.userId = 42;
- request.userInfo.flags = 108;
- request.numberAssociationTypes = 1;
- request.associationTypes.add(KEY_FOB);
+ UserIdentificationResponse response = mUserHalService.getUserAssociation(request);
- UserIdentificationResponse actualResponse = mUserHalService.getUserAssociation(request);
+ assertThat(response.requestId).isEqualTo(DEFAULT_REQUEST_ID);
+ assertThat(response.numberAssociation).isEqualTo(1);
+ assertThat(response.associations).hasSize(1);
+ UserIdentificationAssociation actualAssociation = response.associations.get(0);
+ assertThat(actualAssociation.type).isEqualTo(KEY_FOB);
+ assertThat(actualAssociation.value).isEqualTo(ASSOCIATED_CURRENT_USER);
+ }
+ @Test
+ public void testSetUserAssociation_invalidTimeout() {
+ UserIdentificationSetRequest request = new UserIdentificationSetRequest();
+ assertThrows(IllegalArgumentException.class, () ->
+ mUserHalService.setUserAssociation(0, request, (i, r) -> { }));
+ assertThrows(IllegalArgumentException.class, () ->
+ mUserHalService.setUserAssociation(-1, request, (i, r) -> { }));
+ }
+
+ @Test
+ public void testSetUserAssociation_nullRequest() {
+ assertThrows(NullPointerException.class, () ->
+ mUserHalService.setUserAssociation(TIMEOUT_MS, null, (i, r) -> { }));
+ }
+
+ @Test
+ public void testSetUserAssociation_nullCallback() {
+ UserIdentificationSetRequest request = new UserIdentificationSetRequest();
+ assertThrows(NullPointerException.class, () ->
+ mUserHalService.setUserAssociation(TIMEOUT_MS, request, null));
+ }
+
+ @Test
+ public void testSetUserAssociation_requestWithDuplicatedTypes() {
+ UserIdentificationSetRequest request = new UserIdentificationSetRequest();
+ request.numberAssociations = 2;
+ UserIdentificationSetAssociation association1 = new UserIdentificationSetAssociation();
+ association1.type = KEY_FOB;
+ association1.value = ASSOCIATE_CURRENT_USER;
+ request.associations.add(association1);
+ request.associations.add(association1);
+
+ assertThrows(IllegalArgumentException.class, () ->
+ mUserHalService.setUserAssociation(TIMEOUT_MS, request, (i, r) -> { }));
+ }
+
+ @Test
+ public void testSetUserAssociation_halSetTimedOut() throws Exception {
+ UserIdentificationSetRequest request = validUserIdentificationSetRequest();
+ GenericHalCallback<UserIdentificationResponse> callback = new GenericHalCallback<>(
+ CALLBACK_TIMEOUT_TIMEOUT);
+ replySetPropertyWithTimeoutException(USER_IDENTIFICATION_ASSOCIATION);
+
+ mUserHalService.setUserAssociation(TIMEOUT_MS, request, callback);
+
+ callback.assertCalled();
+ assertCallbackStatus(callback, HalCallback.STATUS_HAL_SET_TIMEOUT);
+ assertThat(callback.response).isNull();
+
+ // Make sure the pending request was removed
+ SystemClock.sleep(CALLBACK_TIMEOUT_TIMEOUT);
+ callback.assertNotCalledAgain();
+ }
+
+ @Test
+ public void testSetUserAssociation_halDidNotReply() throws Exception {
+ UserIdentificationSetRequest request = validUserIdentificationSetRequest();
+ GenericHalCallback<UserIdentificationResponse> callback = new GenericHalCallback<>(
+ CALLBACK_TIMEOUT_TIMEOUT);
+
+ mUserHalService.setUserAssociation(TIMEOUT_MS, request, callback);
+
+ callback.assertCalled();
+ assertCallbackStatus(callback, HalCallback.STATUS_HAL_RESPONSE_TIMEOUT);
+ assertThat(callback.response).isNull();
+ }
+
+ @Test
+ public void testSetUserAssociation_secondCallFailWhilePending() throws Exception {
+ UserIdentificationSetRequest request = validUserIdentificationSetRequest();
+ GenericHalCallback<UserIdentificationResponse> callback1 = new GenericHalCallback<>(
+ CALLBACK_TIMEOUT_TIMEOUT);
+ GenericHalCallback<UserIdentificationResponse> callback2 = new GenericHalCallback<>(
+ CALLBACK_TIMEOUT_TIMEOUT);
+
+ mUserHalService.setUserAssociation(TIMEOUT_MS, request, callback1);
+ mUserHalService.setUserAssociation(TIMEOUT_MS, request, callback2);
+
+ callback1.assertCalled();
+ assertCallbackStatus(callback1, HalCallback.STATUS_HAL_RESPONSE_TIMEOUT);
+ assertThat(callback1.response).isNull();
+
+ callback2.assertCalled();
+ assertCallbackStatus(callback2, HalCallback.STATUS_CONCURRENT_OPERATION);
+ assertThat(callback1.response).isNull();
+ }
+
+ @Test
+ public void testSetUserAssociation_responseWithWrongRequestId() throws Exception {
+ VehiclePropValue propResponse = new VehiclePropValue();
+ propResponse.prop = USER_IDENTIFICATION_ASSOCIATION;
+ propResponse.value.int32Values.add(DEFAULT_REQUEST_ID + 1);
+ AtomicReference<VehiclePropValue> propRequest = replySetPropertyWithOnChangeEvent(
+ USER_IDENTIFICATION_ASSOCIATION, propResponse, /* rightRequestId= */ true);
+ UserIdentificationSetRequest request = replyToValidSetUserIdentificationRequest();
+ GenericHalCallback<UserIdentificationResponse> callback = new GenericHalCallback<>(
+ CALLBACK_TIMEOUT_TIMEOUT);
+
+ mUserHalService.setUserAssociation(TIMEOUT_MS, request, callback);
+
+ // Assert request
+ verifyValidSetUserIdentificationRequestMade(propRequest.get());
+ // Assert response
+ callback.assertCalled();
+ assertCallbackStatus(callback, HalCallback.STATUS_WRONG_HAL_RESPONSE);
+ assertThat(callback.response).isNull();
+ }
+
+ @Test
+ public void testSetUserAssociation_notEnoughValuesOnResponse() throws Exception {
+ VehiclePropValue propResponse = new VehiclePropValue();
+ propResponse.prop = USER_IDENTIFICATION_ASSOCIATION;
+ // need at least 4: requestId, number associations, type1, value1
+ propResponse.value.int32Values.add(1);
+ propResponse.value.int32Values.add(2);
+ propResponse.value.int32Values.add(3);
+
+ AtomicReference<VehiclePropValue> propRequest = replySetPropertyWithOnChangeEvent(
+ USER_IDENTIFICATION_ASSOCIATION, propResponse, /* rightRequestId= */ true);
+ UserIdentificationSetRequest request = replyToValidSetUserIdentificationRequest();
+ GenericHalCallback<UserIdentificationResponse> callback = new GenericHalCallback<>(
+ CALLBACK_TIMEOUT_TIMEOUT);
+
+ mUserHalService.setUserAssociation(TIMEOUT_MS, request, callback);
+
+ // Assert request
+ verifyValidSetUserIdentificationRequestMade(propRequest.get());
+ // Assert response
+ callback.assertCalled();
+ assertCallbackStatus(callback, HalCallback.STATUS_WRONG_HAL_RESPONSE);
+ assertThat(callback.response).isNull();
+ }
+
+ @Test
+ public void testSetUserAssociation_wrongNumberOfAssociationsOnResponse() throws Exception {
+ VehiclePropValue propResponse = new VehiclePropValue();
+ propResponse.prop = USER_IDENTIFICATION_ASSOCIATION;
+ propResponse.value.int32Values.add(DEFAULT_REQUEST_ID);
+ propResponse.value.int32Values.add(2); // 2 associations; request is just 1
+ propResponse.value.int32Values.add(KEY_FOB);
+ propResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER);
+ propResponse.value.int32Values.add(CUSTOM_1);
+ propResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER);
+
+ AtomicReference<VehiclePropValue> propRequest = replySetPropertyWithOnChangeEvent(
+ USER_IDENTIFICATION_ASSOCIATION, propResponse, /* rightRequestId= */ true);
+ UserIdentificationSetRequest request = replyToValidSetUserIdentificationRequest();
+ GenericHalCallback<UserIdentificationResponse> callback = new GenericHalCallback<>(
+ CALLBACK_TIMEOUT_TIMEOUT);
+
+ mUserHalService.setUserAssociation(TIMEOUT_MS, request, callback);
+
+ // Assert request
+ verifyValidSetUserIdentificationRequestMade(propRequest.get());
+ // Assert response
+ callback.assertCalled();
+ assertCallbackStatus(callback, HalCallback.STATUS_WRONG_HAL_RESPONSE);
+ assertThat(callback.response).isNull();
+ }
+
+ @Test
+ public void testSetUserAssociation_typeMismatchOnResponse() throws Exception {
+ VehiclePropValue propResponse = new VehiclePropValue();
+ propResponse.prop = USER_IDENTIFICATION_ASSOCIATION;
+ propResponse.value.int32Values.add(DEFAULT_REQUEST_ID);
+ propResponse.value.int32Values.add(1); // 1 association
+ propResponse.value.int32Values.add(CUSTOM_1); // request is KEY_FOB
+ propResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER);
+
+ AtomicReference<VehiclePropValue> propRequest = replySetPropertyWithOnChangeEvent(
+ USER_IDENTIFICATION_ASSOCIATION, propResponse, /* rightRequestId= */ true);
+ UserIdentificationSetRequest request = replyToValidSetUserIdentificationRequest();
+ GenericHalCallback<UserIdentificationResponse> callback = new GenericHalCallback<>(
+ CALLBACK_TIMEOUT_TIMEOUT);
+
+ mUserHalService.setUserAssociation(TIMEOUT_MS, request, callback);
+
+ // Assert request
+ verifyValidSetUserIdentificationRequestMade(propRequest.get());
+ // Assert response
+ callback.assertCalled();
+ assertCallbackStatus(callback, HalCallback.STATUS_WRONG_HAL_RESPONSE);
+ assertThat(callback.response).isNull();
+ }
+
+ @Test
+ public void testSetUserAssociation_ok() throws Exception {
+ VehiclePropValue propResponse = new VehiclePropValue();
+ propResponse.prop = USER_IDENTIFICATION_ASSOCIATION;
+ propResponse.value.int32Values.add(DEFAULT_REQUEST_ID);
+ propResponse.value.int32Values.add(1); // 1 association
+ propResponse.value.int32Values.add(KEY_FOB);
+ propResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER);
+
+ AtomicReference<VehiclePropValue> propRequest = replySetPropertyWithOnChangeEvent(
+ USER_IDENTIFICATION_ASSOCIATION, propResponse, /* rightRequestId= */ true);
+ UserIdentificationSetRequest request = replyToValidSetUserIdentificationRequest();
+ GenericHalCallback<UserIdentificationResponse> callback = new GenericHalCallback<>(
+ CALLBACK_TIMEOUT_TIMEOUT);
+
+ mUserHalService.setUserAssociation(TIMEOUT_MS, request, callback);
+
+ // Assert request
+ verifyValidSetUserIdentificationRequestMade(propRequest.get());
+ // Assert response
+ callback.assertCalled();
+ assertCallbackStatus(callback, HalCallback.STATUS_OK);
+
+ UserIdentificationResponse actualResponse = callback.response;
+
+ assertThat(actualResponse.requestId).isEqualTo(DEFAULT_REQUEST_ID);
assertThat(actualResponse.numberAssociation).isEqualTo(1);
assertThat(actualResponse.associations).hasSize(1);
UserIdentificationAssociation actualAssociation = actualResponse.associations.get(0);
@@ -776,7 +1040,8 @@
int requestId = request.value.int32Values.get(0);
int responseId = rightRequestId ? requestId : requestId + 1000;
response.value.int32Values.set(0, responseId);
- Log.d(TAG, "mockSetPropertyWithOnChange(): resp=" + response + " for req=" + request);
+ Log.d(TAG, "replySetPropertyWithOnChangeEvent(): resp=" + response + " for req="
+ + request);
mUserHalService.onHalEvents(Arrays.asList(response));
return null;
}).when(mVehicleHal).set(isProperty(prop));
@@ -791,6 +1056,61 @@
"PropId: 0x" + Integer.toHexString(prop))).when(mVehicleHal).set(isProperty(prop));
}
+ /**
+ * Creates and set expectations for a valid request.
+ */
+ private UserIdentificationGetRequest replyToValidGetUserIdentificationRequest(
+ @NonNull VehiclePropValue response) {
+ mockNextRequestId(DEFAULT_REQUEST_ID);
+
+ UserIdentificationGetRequest request = new UserIdentificationGetRequest();
+ request.userInfo.userId = DEFAULT_USER_ID;
+ request.userInfo.flags = DEFAULT_USER_FLAGS;
+ request.numberAssociationTypes = 1;
+ request.associationTypes.add(KEY_FOB);
+
+ when(mVehicleHal.get(isPropertyWithValues(USER_IDENTIFICATION_ASSOCIATION,
+ DEFAULT_REQUEST_ID, DEFAULT_USER_ID, DEFAULT_USER_FLAGS,
+ /* numberAssociations= */ 1, KEY_FOB)))
+ .thenReturn(response);
+
+ return request;
+ }
+
+ /**
+ * Creates and set expectations for a valid request.
+ */
+ private UserIdentificationSetRequest replyToValidSetUserIdentificationRequest() {
+ mockNextRequestId(DEFAULT_REQUEST_ID);
+ return validUserIdentificationSetRequest();
+ }
+
+ /**
+ * Creates a valid request that can be used in test cases where its content is not asserted.
+ */
+ private UserIdentificationSetRequest validUserIdentificationSetRequest() {
+ UserIdentificationSetRequest request = new UserIdentificationSetRequest();
+ request.userInfo.userId = DEFAULT_USER_ID;
+ request.userInfo.flags = DEFAULT_USER_FLAGS;
+ request.numberAssociations = 1;
+ UserIdentificationSetAssociation association1 = new UserIdentificationSetAssociation();
+ association1.type = KEY_FOB;
+ association1.value = ASSOCIATE_CURRENT_USER;
+ request.associations.add(association1);
+ return request;
+ }
+
+ /**
+ * Run empty runnable to make sure that all posted handlers are done.
+ */
+ private void waitForHandler() {
+ mHandler.runWithScissors(() -> { }, /* Default timeout */ CALLBACK_TIMEOUT_TIMEOUT);
+ }
+
+ private void mockNextRequestId(int requestId) {
+ doReturn(requestId).when(mUserHalService).getNextRequestId();
+ }
+
private void assertInitialUserInfoSetRequest(VehiclePropValue req, int requestType) {
assertThat(req.value.int32Values.get(1)).isEqualTo(requestType);
assertUsersInfo(req, mUsersInfo, 2);
@@ -806,8 +1126,7 @@
assertUsersInfo(req, mUsersInfo, 4);
}
- private void assertCallbackStatus(GenericHalCallback callback,
- int expectedStatus) {
+ private void assertCallbackStatus(GenericHalCallback<?> callback, int expectedStatus) {
int actualStatus = callback.status;
if (actualStatus == expectedStatus) return;
@@ -816,6 +1135,27 @@
+ UserHalHelper.halCallbackStatusToString(actualStatus));
}
+ /**
+ * Verifies {@code hal.get()} was called with the values used on
+ * {@link #replyToValidGetUserIdentificationRequest(VehiclePropValue)}.
+ */
+ private void verifyValidGetUserIdentificationRequestMade() {
+ verify(mVehicleHal).get(isPropertyWithValues(USER_IDENTIFICATION_ASSOCIATION,
+ DEFAULT_REQUEST_ID, DEFAULT_USER_ID, DEFAULT_USER_FLAGS,
+ /* numberAssociations= */ 1, KEY_FOB));
+ }
+
+ /**
+ * Verifies {@code hal.set()} was called with the values used on
+ * {@link #replyToValidSetUserIdentificationRequest(VehiclePropValue)}.
+ */
+ private void verifyValidSetUserIdentificationRequestMade(@NonNull VehiclePropValue request) {
+ assertThat(request.prop).isEqualTo(USER_IDENTIFICATION_ASSOCIATION);
+ assertThat(request.value.int32Values).containsExactly(DEFAULT_REQUEST_ID, DEFAULT_USER_ID,
+ DEFAULT_USER_FLAGS,
+ /* numberAssociations= */ 1, KEY_FOB, ASSOCIATE_CURRENT_USER);
+ }
+
private final class GenericHalCallback<R> implements HalCallback<R> {
private final CountDownLatch mLatch = new CountDownLatch(1);
diff --git a/tests/carservice_unit_test/src/com/android/car/hardware/power/CarPowerManagerUnitTest.java b/tests/carservice_unit_test/src/com/android/car/hardware/power/CarPowerManagerUnitTest.java
new file mode 100644
index 0000000..29022f5
--- /dev/null
+++ b/tests/carservice_unit_test/src/com/android/car/hardware/power/CarPowerManagerUnitTest.java
@@ -0,0 +1,381 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.hardware.power;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.testng.Assert.assertThrows;
+
+import android.car.Car;
+import android.car.hardware.power.CarPowerManager;
+import android.car.test.mocks.AbstractExtendedMockitoTestCase;
+import android.car.test.mocks.JavaMockitoHelper;
+import android.content.Context;
+import android.content.res.Resources;
+import android.hardware.automotive.vehicle.V2_0.VehicleApPowerStateReq;
+import android.hardware.automotive.vehicle.V2_0.VehicleApPowerStateShutdownParam;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.util.Log;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+
+import com.android.car.CarPowerManagementService;
+import com.android.car.MockedPowerHalService;
+import com.android.car.R;
+import com.android.car.hal.PowerHalService;
+import com.android.car.hal.PowerHalService.PowerState;
+import com.android.car.systeminterface.DisplayInterface;
+import com.android.car.systeminterface.SystemInterface;
+import com.android.car.systeminterface.SystemStateInterface;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+
+import java.time.Duration;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Semaphore;
+
+@SmallTest
+public class CarPowerManagerUnitTest extends AbstractExtendedMockitoTestCase {
+ private static final String TAG = CarPowerManagerUnitTest.class.getSimpleName();
+ private static final long WAIT_TIMEOUT_MS = 20;
+ private static final long WAIT_TIMEOUT_LONG_MS = 50;
+
+ private final MockDisplayInterface mDisplayInterface = new MockDisplayInterface();
+ private final MockSystemStateInterface mSystemStateInterface = new MockSystemStateInterface();
+ private final Context mContext =
+ InstrumentationRegistry.getInstrumentation().getTargetContext();
+
+ private MockedPowerHalService mPowerHal;
+ private SystemInterface mSystemInterface;
+ private CarPowerManagementService mService;
+ private CarPowerManager mCarPowerManager;
+
+ @Mock
+ private Resources mResources;
+ @Mock
+ private Car mCar;
+
+ @Before
+ public void setUp() throws Exception {
+ mPowerHal = new MockedPowerHalService(true /*isPowerStateSupported*/,
+ true /*isDeepSleepAllowed*/, true /*isTimedWakeupAllowed*/);
+ mSystemInterface = SystemInterface.Builder.defaultSystemInterface(mContext)
+ .withDisplayInterface(mDisplayInterface)
+ .withSystemStateInterface(mSystemStateInterface)
+ .build();
+ setService();
+ mCarPowerManager = new CarPowerManager(mCar, mService);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ if (mService != null) {
+ mService.release();
+ }
+ }
+
+ @Test
+ public void testRequestShutdownOnNextSuspend_positive() throws Exception {
+ setPowerOn();
+ // Tell it to shutdown
+ mCarPowerManager.requestShutdownOnNextSuspend();
+ // Request suspend
+ setPowerState(VehicleApPowerStateReq.SHUTDOWN_PREPARE,
+ VehicleApPowerStateShutdownParam.CAN_SLEEP);
+ // Verify shutdown
+ assertStateReceivedForShutdownOrSleepWithPostpone(PowerHalService.SET_SHUTDOWN_START, 0);
+ }
+
+ @Test
+ public void testRequestShutdownOnNextSuspend_negative() throws Exception {
+ setPowerOn();
+
+ // Do not tell it to shutdown
+
+ // Request suspend
+ setPowerState(VehicleApPowerStateReq.SHUTDOWN_PREPARE,
+ VehicleApPowerStateShutdownParam.CAN_SLEEP);
+ // Verify suspend
+ assertStateReceivedForShutdownOrSleepWithPostpone(PowerHalService.SET_DEEP_SLEEP_ENTRY, 0);
+ }
+
+ @Test
+ public void testScheduleNextWakeupTime() throws Exception {
+ setPowerOn();
+
+ int wakeTime = 1234;
+ mCarPowerManager.scheduleNextWakeupTime(wakeTime);
+
+ setPowerState(VehicleApPowerStateReq.SHUTDOWN_PREPARE,
+ VehicleApPowerStateShutdownParam.CAN_SLEEP);
+
+ // Verify that we suspended with the requested wake-up time
+ assertStateReceivedForShutdownOrSleepWithPostpone(
+ PowerHalService.SET_DEEP_SLEEP_ENTRY, wakeTime);
+ }
+
+ @Test
+ public void testSetListener() throws Exception {
+ setPowerOn();
+
+ WaitablePowerStateListener listener = new WaitablePowerStateListener(2);
+
+ setPowerState(VehicleApPowerStateReq.SHUTDOWN_PREPARE,
+ VehicleApPowerStateShutdownParam.CAN_SLEEP);
+
+ assertStateReceivedForShutdownOrSleepWithPostpone(PowerHalService.SET_DEEP_SLEEP_ENTRY, 0);
+
+ int finalState = listener.await();
+ assertThat(finalState).isEqualTo(PowerHalService.SET_DEEP_SLEEP_ENTRY);
+ }
+
+ @Test
+ public void testSetListenerWithCompletion() throws Exception {
+ setPowerOn();
+
+ WaitablePowerStateListenerWithCompletion listener =
+ new WaitablePowerStateListenerWithCompletion(2);
+
+ setPowerState(VehicleApPowerStateReq.SHUTDOWN_PREPARE,
+ VehicleApPowerStateShutdownParam.CAN_SLEEP);
+ assertStateReceivedForShutdownOrSleepWithPostpone(PowerHalService.SET_DEEP_SLEEP_ENTRY, 0);
+
+ int finalState = listener.await();
+ assertThat(finalState).isEqualTo(PowerHalService.SET_DEEP_SLEEP_ENTRY);
+ }
+
+ @Test
+ public void testClearListener() throws Exception {
+ setPowerOn();
+
+ // Set a listener
+ WaitablePowerStateListener listener = new WaitablePowerStateListener(1);
+
+ mCarPowerManager.clearListener();
+
+ setPowerState(VehicleApPowerStateReq.SHUTDOWN_PREPARE,
+ VehicleApPowerStateShutdownParam.CAN_SLEEP);
+
+ assertStateReceivedForShutdownOrSleepWithPostpone(PowerHalService.SET_DEEP_SLEEP_ENTRY, 0);
+ // Verify that the listener didn't run
+ assertThrows(IllegalStateException.class, () -> listener.await());
+ }
+
+ @Test
+ public void testGetPowerState() throws Exception {
+ setPowerOn();
+ assertThat(mCarPowerManager.getPowerState()).isEqualTo(PowerHalService.SET_ON);
+
+ // Request suspend
+ setPowerState(VehicleApPowerStateReq.SHUTDOWN_PREPARE,
+ VehicleApPowerStateShutdownParam.CAN_SLEEP);
+ assertStateReceivedForShutdownOrSleepWithPostpone(PowerHalService.SET_DEEP_SLEEP_ENTRY, 0);
+ assertThat(mCarPowerManager.getPowerState())
+ .isEqualTo(PowerHalService.SET_DEEP_SLEEP_ENTRY);
+ }
+
+ /**
+ * Helper method to create mService and initialize a test case
+ */
+ private void setService() throws Exception {
+ Log.i(TAG, "setService(): overridden overlay properties: "
+ + "config_disableUserSwitchDuringResume="
+ + mResources.getBoolean(R.bool.config_disableUserSwitchDuringResume)
+ + ", maxGarageModeRunningDurationInSecs="
+ + mResources.getInteger(R.integer.maxGarageModeRunningDurationInSecs));
+ mService = new CarPowerManagementService(mContext, mResources, mPowerHal,
+ mSystemInterface, null, null, null);
+ mService.init();
+ mService.setShutdownTimersForTest(0, 0);
+ assertStateReceived(MockedPowerHalService.SET_WAIT_FOR_VHAL, 0);
+ }
+
+ private void assertStateReceived(int expectedState, int expectedParam) throws Exception {
+ int[] state = mPowerHal.waitForSend(WAIT_TIMEOUT_MS);
+ assertThat(state).asList().containsExactly(expectedState, expectedParam).inOrder();
+ }
+
+ /**
+ * Helper method to get the system into ON
+ */
+ private void setPowerOn() throws Exception {
+ setPowerState(VehicleApPowerStateReq.ON, 0);
+ assertThat(mDisplayInterface.waitForDisplayStateChange(WAIT_TIMEOUT_MS)).isTrue();
+ }
+
+ /**
+ * Helper to set the PowerHal state
+ *
+ * @param stateEnum Requested state enum
+ * @param stateParam Addition state parameter
+ */
+ private void setPowerState(int stateEnum, int stateParam) {
+ mPowerHal.setCurrentPowerState(new PowerState(stateEnum, stateParam));
+ }
+
+ private void assertStateReceivedForShutdownOrSleepWithPostpone(
+ int lastState, int stateParameter) throws Exception {
+ long startTime = System.currentTimeMillis();
+ while (true) {
+ int[] state = mPowerHal.waitForSend(WAIT_TIMEOUT_LONG_MS);
+ if (state[0] == lastState) {
+ assertThat(state[1]).isEqualTo(stateParameter);
+ return;
+ }
+ assertThat(state[0]).isEqualTo(PowerHalService.SET_SHUTDOWN_POSTPONE);
+ assertThat(System.currentTimeMillis() - startTime).isLessThan(WAIT_TIMEOUT_LONG_MS);
+ }
+ }
+
+ private static final class MockDisplayInterface implements DisplayInterface {
+ private boolean mDisplayOn = true;
+ private final Semaphore mDisplayStateWait = new Semaphore(0);
+
+ @Override
+ public void setDisplayBrightness(int brightness) {}
+
+ @Override
+ public synchronized void setDisplayState(boolean on) {
+ mDisplayOn = on;
+ mDisplayStateWait.release();
+ }
+
+ public synchronized boolean getDisplayState() {
+ return mDisplayOn;
+ }
+
+ public boolean waitForDisplayStateChange(long timeoutMs) throws Exception {
+ JavaMockitoHelper.await(mDisplayStateWait, timeoutMs);
+ return mDisplayOn;
+ }
+
+ @Override
+ public void startDisplayStateMonitoring(CarPowerManagementService service) {}
+
+ @Override
+ public void stopDisplayStateMonitoring() {}
+
+ @Override
+ public void refreshDisplayBrightness() {}
+ }
+
+ /**
+ * Helper class to set a power-state listener,
+ * verify that the listener gets called the
+ * right number of times, and return the final
+ * power state.
+ */
+ private final class WaitablePowerStateListener {
+ private final CountDownLatch mLatch;
+ private int mListenedState = -1;
+ WaitablePowerStateListener(int initialCount) {
+ mLatch = new CountDownLatch(initialCount);
+ mCarPowerManager.setListener(
+ (state) -> {
+ mListenedState = state;
+ mLatch.countDown();
+ });
+ }
+
+ int await() throws Exception {
+ JavaMockitoHelper.await(mLatch, WAIT_TIMEOUT_MS);
+ return mListenedState;
+ }
+ }
+
+ /**
+ * Helper class to set a power-state listener with completion,
+ * verify that the listener gets called the right number of times,
+ * verify that the CompletableFuture is provided, complete the
+ * CompletableFuture, and return the final power state.
+ */
+ private final class WaitablePowerStateListenerWithCompletion {
+ private final CountDownLatch mLatch;
+ private int mListenedState = -1;
+ WaitablePowerStateListenerWithCompletion(int initialCount) {
+ mLatch = new CountDownLatch(initialCount);
+ mCarPowerManager.setListenerWithCompletion(
+ (state, future) -> {
+ mListenedState = state;
+ if (state == PowerHalService.SET_SHUTDOWN_PREPARE) {
+ assertThat(future).isNotNull();
+ future.complete(null);
+ } else {
+ assertThat(future).isNull();
+ }
+ mLatch.countDown();
+ });
+ }
+
+ int await() throws Exception {
+ JavaMockitoHelper.await(mLatch, WAIT_TIMEOUT_MS);
+ return mListenedState;
+ }
+ }
+
+ private static final class MockSystemStateInterface implements SystemStateInterface {
+ private final Semaphore mShutdownWait = new Semaphore(0);
+ private final Semaphore mSleepWait = new Semaphore(0);
+ private final Semaphore mSleepExitWait = new Semaphore(0);
+ private boolean mWakeupCausedByTimer = false;
+
+ @Override
+ public void shutdown() {
+ mShutdownWait.release();
+ }
+
+ public void waitForShutdown(long timeoutMs) throws Exception {
+ JavaMockitoHelper.await(mShutdownWait, timeoutMs);
+ }
+
+ @Override
+ public boolean enterDeepSleep() {
+ mSleepWait.release();
+ try {
+ mSleepExitWait.acquire();
+ } catch (InterruptedException e) {
+ }
+ return true;
+ }
+
+ public void waitForSleepEntryAndWakeup(long timeoutMs) throws Exception {
+ JavaMockitoHelper.await(mSleepWait, timeoutMs);
+ mSleepExitWait.release();
+ }
+
+ @Override
+ public void scheduleActionForBootCompleted(Runnable action, Duration delay) {}
+
+ @Override
+ public boolean isWakeupCausedByTimer() {
+ Log.i(TAG, "isWakeupCausedByTimer:" + mWakeupCausedByTimer);
+ return mWakeupCausedByTimer;
+ }
+
+ public synchronized void setWakeupCausedByTimer(boolean set) {
+ mWakeupCausedByTimer = set;
+ }
+
+ @Override
+ public boolean isSystemSupportingDeepSleep() {
+ return true;
+ }
+ }
+}
diff --git a/tests/carservice_unit_test/src/com/android/car/user/CarUserManagerUnitTest.java b/tests/carservice_unit_test/src/com/android/car/user/CarUserManagerUnitTest.java
index abfd48d..80318a7 100644
--- a/tests/carservice_unit_test/src/com/android/car/user/CarUserManagerUnitTest.java
+++ b/tests/carservice_unit_test/src/com/android/car/user/CarUserManagerUnitTest.java
@@ -15,9 +15,11 @@
*/
package com.android.car.user;
+import static android.Manifest.permission.INTERACT_ACROSS_USERS;
import static android.car.test.mocks.AndroidMockitoHelper.mockUmGetUsers;
import static android.car.test.util.UserTestingHelper.newUsers;
import static android.car.testapi.CarMockitoHelper.mockHandleRemoteExceptionFromCarServiceWithDefaultValue;
+import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.os.UserHandle.USER_SYSTEM;
import static com.google.common.truth.Truth.assertThat;
@@ -26,8 +28,10 @@
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.notNull;
+import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.testng.Assert.assertThrows;
@@ -39,9 +43,11 @@
import android.car.ICarUserService;
import android.car.test.mocks.AbstractExtendedMockitoTestCase;
import android.car.user.CarUserManager;
+import android.car.user.CarUserManager.UserLifecycleListener;
import android.car.user.CarUserManager.UserSwitchUiCallback;
-import android.car.user.GetUserIdentificationAssociationResponse;
+import android.car.user.UserIdentificationAssociationResponse;
import android.car.user.UserSwitchResult;
+import android.content.Context;
import android.content.pm.UserInfo;
import android.os.RemoteException;
import android.os.UserManager;
@@ -117,9 +123,68 @@
}
@Test
+ public void testAddListener_nullExecutor() {
+ mockInteractAcrossUsersPermission();
+
+ assertThrows(NullPointerException.class, () -> mMgr.addListener(null, (e) -> { }));
+ }
+
+ @Test
+ public void testAddListener_nullListener() {
+ mockInteractAcrossUsersPermission();
+
+ assertThrows(NullPointerException.class, () -> mMgr.addListener(Runnable::run, null));
+ }
+
+ @Test
+ public void testAddListener_sameListenerAddedTwice() {
+ mockInteractAcrossUsersPermission();
+
+ UserLifecycleListener listener = (e) -> { };
+
+ mMgr.addListener(Runnable::run, listener);
+ assertThrows(IllegalStateException.class, () -> mMgr.addListener(Runnable::run, listener));
+ }
+
+ @Test
+ public void testAddListener_differentListenersAddedTwice() {
+ mockInteractAcrossUsersPermission();
+
+ mMgr.addListener(Runnable::run, (e) -> { });
+ mMgr.addListener(Runnable::run, (e) -> { });
+ }
+
+ @Test
+ public void testRemoveListener_nullListener() {
+ mockInteractAcrossUsersPermission();
+
+ assertThrows(NullPointerException.class, () -> mMgr.removeListener(null));
+ }
+
+ @Test
+ public void testRemoveListener_notAddedBefore() {
+ mockInteractAcrossUsersPermission();
+
+ UserLifecycleListener listener = (e) -> { };
+
+ assertThrows(IllegalStateException.class, () -> mMgr.removeListener(listener));
+ }
+
+ @Test
+ public void testRemoveListener_addAndRemove() {
+ mockInteractAcrossUsersPermission();
+ UserLifecycleListener listener = (e) -> { };
+
+ mMgr.addListener(Runnable::run, listener);
+ mMgr.removeListener(listener);
+
+ // Make sure it was removed
+ assertThrows(IllegalStateException.class, () -> mMgr.removeListener(listener));
+ }
+
+ @Test
public void testSwitchUser_success() throws Exception {
- expectServiceSwitchUserSucceeds(11, UserSwitchResult.STATUS_SUCCESSFUL,
- "D'OH!");
+ expectServiceSwitchUserSucceeds(11, UserSwitchResult.STATUS_SUCCESSFUL, "D'OH!");
AndroidFuture<UserSwitchResult> future = mMgr.switchUser(11);
@@ -170,24 +235,108 @@
@Test
public void testGetUserIdentificationAssociation_remoteException() throws Exception {
+ int[] types = new int[] {1};
+ when(mService.getUserIdentificationAssociation(types))
+ .thenThrow(new RemoteException("D'OH!"));
mockHandleRemoteExceptionFromCarServiceWithDefaultValue(mCar);
- assertThrows(IllegalArgumentException.class,
- () -> mMgr.getUserIdentificationAssociation(new int[] {}));
+
+ assertThat(mMgr.getUserIdentificationAssociation(types)).isNull();
}
@Test
public void testGetUserIdentificationAssociation_ok() throws Exception {
int[] types = new int[] { 4, 8, 15, 16, 23, 42 };
- GetUserIdentificationAssociationResponse expectedResponse =
- new GetUserIdentificationAssociationResponse(null, new int[] {});
+ UserIdentificationAssociationResponse expectedResponse =
+ UserIdentificationAssociationResponse.forSuccess(types);
when(mService.getUserIdentificationAssociation(types)).thenReturn(expectedResponse);
- GetUserIdentificationAssociationResponse actualResponse =
+ UserIdentificationAssociationResponse actualResponse =
mMgr.getUserIdentificationAssociation(types);
assertThat(actualResponse).isSameAs(expectedResponse);
}
+ // TODO(b/155311595): remove once permission check is done only on service
+ private void mockInteractAcrossUsersPermission() {
+ Context context = mock(Context.class);
+ when(mCar.getContext()).thenReturn(context);
+ when(context.checkSelfPermission(INTERACT_ACROSS_USERS)).thenReturn(PERMISSION_GRANTED);
+ }
+
+ @Test
+ public void testSetUserIdentificationAssociation_nullTypes() throws Exception {
+ assertThrows(IllegalArgumentException.class,
+ () -> mMgr.setUserIdentificationAssociation(null, new int[] {42}));
+ }
+
+ @Test
+ public void testSetUserIdentificationAssociation_emptyTypes() throws Exception {
+ assertThrows(IllegalArgumentException.class,
+ () -> mMgr.setUserIdentificationAssociation(new int[0], new int[] {42}));
+ }
+
+ @Test
+ public void testSetUserIdentificationAssociation_nullValues() throws Exception {
+ assertThrows(IllegalArgumentException.class,
+ () -> mMgr.setUserIdentificationAssociation(new int[] {42}, null));
+ }
+
+ @Test
+ public void testSetUserIdentificationAssociation_emptyValues() throws Exception {
+ assertThrows(IllegalArgumentException.class,
+ () -> mMgr.setUserIdentificationAssociation(new int[] {42}, new int[0]));
+ }
+
+ @Test
+ public void testSetUserIdentificationAssociation_sizeMismatch() throws Exception {
+ assertThrows(IllegalArgumentException.class,
+ () -> mMgr.setUserIdentificationAssociation(new int[] {1}, new int[] {2, 3}));
+ }
+
+ @Test
+ public void testSetUserIdentificationAssociation_remoteException() throws Exception {
+ int[] types = new int[] {1};
+ int[] values = new int[] {2};
+ doThrow(new RemoteException("D'OH!")).when(mService)
+ .setUserIdentificationAssociation(anyInt(), same(types), same(values), notNull());
+ mockHandleRemoteExceptionFromCarServiceWithDefaultValue(mCar);
+
+ AndroidFuture<UserIdentificationAssociationResponse> future =
+ mMgr.setUserIdentificationAssociation(types, values);
+
+ assertThat(future).isNotNull();
+ UserIdentificationAssociationResponse result = getResult(future);
+ assertThat(result.isSuccess()).isFalse();
+ assertThat(result.getValues()).isNull();
+ assertThat(result.getErrorMessage()).isNull();
+ }
+
+ @Test
+ public void testSetUserIdentificationAssociation_ok() throws Exception {
+ int[] types = new int[] { 1, 2, 3 };
+ int[] values = new int[] { 10, 20, 30 };
+ doAnswer((inv) -> {
+ @SuppressWarnings("unchecked")
+ AndroidFuture<UserIdentificationAssociationResponse> future =
+ (AndroidFuture<UserIdentificationAssociationResponse>) inv.getArguments()[3];
+ UserIdentificationAssociationResponse response =
+ UserIdentificationAssociationResponse.forSuccess(values, "D'OH!");
+ future.complete(response);
+ return null;
+ }).when(mService)
+ .setUserIdentificationAssociation(anyInt(), same(types), same(values), notNull());
+ mockHandleRemoteExceptionFromCarServiceWithDefaultValue(mCar);
+
+ AndroidFuture<UserIdentificationAssociationResponse> future =
+ mMgr.setUserIdentificationAssociation(types, values);
+
+ assertThat(future).isNotNull();
+ UserIdentificationAssociationResponse result = getResult(future);
+ assertThat(result.isSuccess()).isTrue();
+ assertThat(result.getValues()).asList().containsAllOf(10, 20, 30).inOrder();
+ assertThat(result.getErrorMessage()).isEqualTo("D'OH!");
+ }
+
private void expectServiceSwitchUserSucceeds(@UserIdInt int userId,
@UserSwitchResult.Status int status, @Nullable String errorMessage)
throws RemoteException {
diff --git a/tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java b/tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java
index f52e48d..c44ea24 100644
--- a/tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java
+++ b/tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java
@@ -16,6 +16,7 @@
package com.android.car.user;
+import static android.car.test.mocks.AndroidMockitoHelper.mockUmGetSystemUser;
import static android.car.test.mocks.AndroidMockitoHelper.mockUmGetUserInfo;
import static android.car.test.mocks.AndroidMockitoHelper.mockUmGetUsers;
import static android.car.test.util.UserTestingHelper.UserInfoBuilder;
@@ -54,6 +55,7 @@
import android.car.CarOccupantZoneManager.OccupantZoneInfo;
import android.car.settings.CarSettings;
import android.car.test.mocks.AbstractExtendedMockitoTestCase;
+import android.car.test.mocks.AndroidMockitoHelper;
import android.car.test.mocks.BlockingAnswer;
import android.car.test.util.BlockingResultReceiver;
import android.car.testapi.BlockingUserLifecycleListener;
@@ -61,11 +63,12 @@
import android.car.user.CarUserManager.UserLifecycleEvent;
import android.car.user.CarUserManager.UserLifecycleEventType;
import android.car.user.CarUserManager.UserLifecycleListener;
-import android.car.user.GetUserIdentificationAssociationResponse;
+import android.car.user.UserIdentificationAssociationResponse;
import android.car.user.UserSwitchResult;
import android.car.userlib.CarUserManagerHelper;
import android.car.userlib.HalCallback;
import android.car.userlib.UserHalHelper;
+import android.car.userlib.UserHelper;
import android.content.Context;
import android.content.pm.UserInfo;
import android.content.res.Resources;
@@ -79,6 +82,7 @@
import android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociation;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationGetRequest;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationResponse;
+import android.hardware.automotive.vehicle.V2_0.UserIdentificationSetRequest;
import android.hardware.automotive.vehicle.V2_0.UsersInfo;
import android.location.LocationManager;
import android.os.Bundle;
@@ -153,6 +157,8 @@
private final int mGetUserInfoRequestType = InitialUserInfoRequestType.COLD_BOOT;
private final AndroidFuture<UserSwitchResult> mUserSwitchFuture = new AndroidFuture<>();
+ private final AndroidFuture<UserIdentificationAssociationResponse> mUserAssociationRespFuture =
+ new AndroidFuture<>();
private final int mAsyncCallTimeoutMs = 100;
private final BlockingResultReceiver mReceiver =
new BlockingResultReceiver(mAsyncCallTimeoutMs);
@@ -174,7 +180,11 @@
@Override
protected void onSessionBuilder(CustomMockitoSessionBuilder builder) {
builder
- .spyStatic(ActivityManager.class);
+ .spyStatic(ActivityManager.class)
+ // TODO(b/156299496): it cannot spy on UserManager, as it would slow down the tests
+ // considerably (more than 5 minutes total, instead of just a couple seconds). So, it's
+ // mocking UserHelper.isHeadlessSystemUser() (on mockIsHeadlessSystemUser()) instead...
+ .spyStatic(UserHelper.class);
}
/**
@@ -218,7 +228,7 @@
}
@Test
- public void testOnUserLifecycleEvent_nofityListener() throws Exception {
+ public void testOnUserLifecycleEvent_notifyListener() throws Exception {
// Arrange
mCarUserService.addUserLifecycleListener(mUserLifecycleListener);
mockExistingUsers();
@@ -259,6 +269,14 @@
assertThat(actualEvent.getUserId()).isEqualTo(expectedNewUserId);
}
+ private void verifyLastActiveUserSet(@UserIdInt int userId) {
+ verify(mMockedCarUserManagerHelper).setLastActiveUser(userId);
+ }
+
+ private void verifyLastActiveUserNotSet() {
+ verify(mMockedCarUserManagerHelper, never()).setLastActiveUser(anyInt());
+ }
+
/**
* Test that the {@link CarUserService} disables the location service for headless user 0 upon
* first run.
@@ -274,10 +292,24 @@
* Test that the {@link CarUserService} updates last active user on user switch.
*/
@Test
- public void testLastActiveUserUpdatedOnUserSwitch() throws Exception {
+ public void testLastActiveUserUpdatedOnUserSwitch_nonHeadlessSystemUser() throws Exception {
+ mockIsHeadlessSystemUser(mRegularUser.id, false);
mockExistingUsers();
+
sendUserSwitchingEvent(mAdminUser.id, mRegularUser.id);
- verify(mMockedCarUserManagerHelper).setLastActiveUser(mRegularUser.id);
+
+ verifyLastActiveUserSet(mRegularUser.id);
+ }
+
+ @Test
+ public void testLastActiveUserUpdatedOnUserSwitch_headlessSystemUser() throws Exception {
+ mockIsHeadlessSystemUser(mRegularUser.id, true);
+ mockUmGetSystemUser(mMockedUserManager);
+ mockExistingUsers();
+
+ sendUserSwitchingEvent(mAdminUser.id, UserHandle.USER_SYSTEM);
+
+ verifyLastActiveUserNotSet();
}
/**
@@ -953,6 +985,30 @@
}
@Test
+ public void testSwitchUser_OEMRequest_success() throws Exception {
+ mockExistingUsersAndCurrentUser(mAdminUser);
+ mockAmSwitchUser(mRegularUser, true);
+ int requestId = -1;
+
+ mCarUserService.switchAndroidUserFromHal(requestId, mRegularUser.id);
+ mockCurrentUser(mRegularUser);
+ sendUserUnlockedEvent(mRegularUser.id);
+
+ assertPostSwitch(requestId, mRegularUser.id, mRegularUser.id);
+ }
+
+ @Test
+ public void testSwitchUser_OEMRequest_failure() throws Exception {
+ mockExistingUsersAndCurrentUser(mAdminUser);
+ mockAmSwitchUser(mRegularUser, false);
+ int requestId = -1;
+
+ mCarUserService.switchAndroidUserFromHal(requestId, mRegularUser.id);
+
+ assertPostSwitch(requestId, mAdminUser.id, mRegularUser.id);
+ }
+
+ @Test
public void testGetUserInfo_nullReceiver() throws Exception {
assertThrows(NullPointerException.class, () -> mCarUserService
.getInitialUserInfo(mGetUserInfoRequestType, mAsyncCallTimeoutMs, null));
@@ -1099,39 +1155,133 @@
@Test
public void testGetUserIdentificationAssociation_service_returnNull() throws Exception {
- // Must use the real user id - and not mock it - as the service will infer the id from
- // the Binder call - it's not worth the effort of mocking that.
- int currentUserId = ActivityManager.getCurrentUser();
- Log.d(TAG, "testGetUserIdentificationAssociation_ok(): current user is " + currentUserId);
- UserInfo currentUser = mockUmGetUserInfo(mMockedUserManager, currentUserId,
- UserInfo.FLAG_ADMIN);
+ mockCurrentUserForBinderCalls();
// Not mocking service call, so it will return null
- GetUserIdentificationAssociationResponse response = mCarUserService
+ UserIdentificationAssociationResponse response = mCarUserService
.getUserIdentificationAssociation(new int[] { 108 });
- assertThat(response).isNull();
+ assertThat(response.isSuccess()).isFalse();
+ assertThat(response.getValues()).isNull();
+ assertThat(response.getErrorMessage()).isNull();
}
@Test
public void testGetUserIdentificationAssociation_ok() throws Exception {
- // Must use the real user id - and not mock it - as the service will infer the id from
- // the Binder call - it's not worth the effort of mocking that.
- int currentUserId = ActivityManager.getCurrentUser();
- Log.d(TAG, "testGetUserIdentificationAssociation_ok(): current user is " + currentUserId);
- UserInfo currentUser = mockUmGetUserInfo(mMockedUserManager, currentUserId,
- UserInfo.FLAG_ADMIN);
+ UserInfo currentUser = mockCurrentUserForBinderCalls();
int[] types = new int[] { 1, 2, 3 };
- mockHalGetUserIdentificationAssociation(currentUser, types, new int[] { 10, 20, 30 },
- "D'OH!");
+ int[] values = new int[] { 10, 20, 30 };
+ mockHalGetUserIdentificationAssociation(currentUser, types, values, "D'OH!");
- GetUserIdentificationAssociationResponse response = mCarUserService
+ UserIdentificationAssociationResponse response = mCarUserService
.getUserIdentificationAssociation(types);
- assertThat(response.getValues()).asList().containsExactly(10, 20, 30)
- .inOrder();
+ assertThat(response.isSuccess()).isTrue();
+ assertThat(response.getValues()).asList().containsAllOf(10, 20, 30).inOrder();
+ assertThat(response.getErrorMessage()).isEqualTo("D'OH!");
+ }
+
+ @Test
+ public void testSetUserIdentificationAssociation_nullTypes() throws Exception {
+ assertThrows(IllegalArgumentException.class, () -> mCarUserService
+ .setUserIdentificationAssociation(mAsyncCallTimeoutMs,
+ null, new int[] {42}, mUserAssociationRespFuture));
+ }
+
+ @Test
+ public void testSetUserIdentificationAssociation_emptyTypes() throws Exception {
+ assertThrows(IllegalArgumentException.class, () -> mCarUserService
+ .setUserIdentificationAssociation(mAsyncCallTimeoutMs,
+ new int[0], new int[] {42}, mUserAssociationRespFuture));
+ }
+
+ @Test
+ public void testSetUserIdentificationAssociation_nullValues() throws Exception {
+ assertThrows(IllegalArgumentException.class, () -> mCarUserService
+ .setUserIdentificationAssociation(mAsyncCallTimeoutMs,
+ new int[] {42}, null, mUserAssociationRespFuture));
+ }
+ @Test
+ public void testSetUserIdentificationAssociation_sizeMismatch() throws Exception {
+ assertThrows(IllegalArgumentException.class, () -> mCarUserService
+ .setUserIdentificationAssociation(mAsyncCallTimeoutMs,
+ new int[] {1}, new int[] {2, 2}, mUserAssociationRespFuture));
+ }
+
+ @Test
+ public void testSetUserIdentificationAssociation_nullFuture() throws Exception {
+ assertThrows(IllegalArgumentException.class, () -> mCarUserService
+ .setUserIdentificationAssociation(mAsyncCallTimeoutMs,
+ new int[] {42}, new int[] {42}, null));
+ }
+
+ @Test
+ public void testSetUserIdentificationAssociation_noPermission() throws Exception {
+ mockManageUsersPermission(android.Manifest.permission.MANAGE_USERS, false);
+ assertThrows(SecurityException.class, () -> mCarUserService
+ .setUserIdentificationAssociation(mAsyncCallTimeoutMs,
+ new int[] {42}, new int[] {42}, mUserAssociationRespFuture));
+ }
+
+ @Test
+ public void testSetUserIdentificationAssociation_noCurrentUser() throws Exception {
+ // Should fail because we're not mocking UserManager.getUserInfo() to set the flag
+ assertThrows(IllegalArgumentException.class, () -> mCarUserService
+ .setUserIdentificationAssociation(mAsyncCallTimeoutMs,
+ new int[] {42}, new int[] {42}, mUserAssociationRespFuture));
+ }
+
+ @Test
+ public void testSetUserIdentificationAssociation_halFailedWithErrorMessage() throws Exception {
+ mockCurrentUserForBinderCalls();
+ mockHalSetUserIdentificationAssociationFailure("D'OH!");
+ int[] types = new int[] { 1, 2, 3 };
+ int[] values = new int[] { 10, 20, 30 };
+ mCarUserService.setUserIdentificationAssociation(mAsyncCallTimeoutMs, types, values,
+ mUserAssociationRespFuture);
+
+ UserIdentificationAssociationResponse response = getUserAssociationRespResult();
+
+ assertThat(response.isSuccess()).isFalse();
+ assertThat(response.getValues()).isNull();
+ assertThat(response.getErrorMessage()).isEqualTo("D'OH!");
+
+ }
+
+ @Test
+ public void testSetUserIdentificationAssociation_halFailedWithoutErrorMessage()
+ throws Exception {
+ mockCurrentUserForBinderCalls();
+ mockHalSetUserIdentificationAssociationFailure(/* errorMessage= */ null);
+ int[] types = new int[] { 1, 2, 3 };
+ int[] values = new int[] { 10, 20, 30 };
+ mCarUserService.setUserIdentificationAssociation(mAsyncCallTimeoutMs, types, values,
+ mUserAssociationRespFuture);
+
+ UserIdentificationAssociationResponse response = getUserAssociationRespResult();
+
+ assertThat(response.isSuccess()).isFalse();
+ assertThat(response.getValues()).isNull();
+ assertThat(response.getErrorMessage()).isNull();
+ }
+
+ @Test
+ public void testSetUserIdentificationAssociation_ok() throws Exception {
+ UserInfo currentUser = mockCurrentUserForBinderCalls();
+
+ int[] types = new int[] { 1, 2, 3 };
+ int[] values = new int[] { 10, 20, 30 };
+ mockHalSetUserIdentificationAssociationSuccess(currentUser, types, values, "D'OH!");
+
+ mCarUserService.setUserIdentificationAssociation(mAsyncCallTimeoutMs, types, values,
+ mUserAssociationRespFuture);
+
+ UserIdentificationAssociationResponse response = getUserAssociationRespResult();
+
+ assertThat(response.isSuccess()).isTrue();
+ assertThat(response.getValues()).asList().containsAllOf(10, 20, 30).inOrder();
assertThat(response.getErrorMessage()).isEqualTo("D'OH!");
}
@@ -1161,6 +1311,12 @@
}
@NonNull
+ private UserIdentificationAssociationResponse getUserAssociationRespResult()
+ throws Exception {
+ return getResult(mUserAssociationRespFuture);
+ }
+
+ @NonNull
private <T> T getResult(@NonNull AndroidFuture<T> future) throws Exception {
try {
return future.get(mAsyncCallTimeoutMs, TimeUnit.MILLISECONDS);
@@ -1170,6 +1326,19 @@
}
/**
+ * This method must be called for cases where the service infers the user id of the caller
+ * using Binder - it's not worth the effort of mocking such (native) calls.
+ */
+ @NonNull
+ private UserInfo mockCurrentUserForBinderCalls() {
+ int currentUserId = ActivityManager.getCurrentUser();
+ Log.d(TAG, "testetUserIdentificationAssociation_ok(): current user is " + currentUserId);
+ UserInfo currentUser = mockUmGetUserInfo(mMockedUserManager, currentUserId,
+ UserInfo.FLAG_ADMIN);
+ return currentUser;
+ }
+
+ /**
* Mock calls that generate a {@code UsersInfo}.
*/
private void mockExistingUsersAndCurrentUser(@NonNull UserInfo user)
@@ -1181,7 +1350,7 @@
private void mockExistingUsers() {
mockUmGetUsers(mMockedUserManager, mExistingUsers);
for (UserInfo user : mExistingUsers) {
- when(mMockedUserManager.getUserInfo(user.id)).thenReturn(user);
+ AndroidMockitoHelper.mockUmGetUserInfo(mMockedUserManager, user);
}
}
@@ -1208,6 +1377,10 @@
eq(usersInfo), notNull());
}
+ private void mockIsHeadlessSystemUser(@UserIdInt int userId, boolean mode) {
+ doReturn(mode).when(() -> UserHelper.isHeadlessSystemUser(userId));
+ }
+
private void mockHalSwitch(@UserIdInt int currentUserId, @NonNull UserInfo androidTargetUser,
@Nullable SwitchUserResponse response) {
mockHalSwitch(currentUserId, HalCallback.STATUS_OK, response, androidTargetUser);
@@ -1272,6 +1445,53 @@
.thenReturn(response);
}
+ private void mockHalSetUserIdentificationAssociationSuccess(@NonNull UserInfo user,
+ @NonNull int[] types, @NonNull int[] values, @Nullable String errorMessage) {
+ assertWithMessage("mismatch on number of types and values").that(types.length)
+ .isEqualTo(values.length);
+
+ UserIdentificationResponse response = new UserIdentificationResponse();
+ response.numberAssociation = types.length;
+ response.errorMessage = errorMessage;
+ for (int i = 0; i < types.length; i++) {
+ UserIdentificationAssociation association = new UserIdentificationAssociation();
+ association.type = types[i];
+ association.value = values[i];
+ response.associations.add(association);
+ }
+
+ doAnswer((invocation) -> {
+ Log.d(TAG, "Answering " + invocation + " with " + response);
+ @SuppressWarnings("unchecked")
+ UserIdentificationSetRequest request =
+ (UserIdentificationSetRequest) invocation.getArguments()[1];
+ assertWithMessage("Wrong user on %s", request)
+ .that(request.userInfo.userId)
+ .isEqualTo(user.id);
+ assertWithMessage("Wrong flags on %s", request)
+ .that(UserHalHelper.toUserInfoFlags(request.userInfo.flags))
+ .isEqualTo(user.flags);
+ @SuppressWarnings("unchecked")
+ HalCallback<UserIdentificationResponse> callback =
+ (HalCallback<UserIdentificationResponse>) invocation.getArguments()[2];
+ callback.onResponse(HalCallback.STATUS_OK, response);
+ return null;
+ }).when(mUserHal).setUserAssociation(eq(mAsyncCallTimeoutMs), notNull(), notNull());
+ }
+
+ private void mockHalSetUserIdentificationAssociationFailure(@NonNull String errorMessage) {
+ UserIdentificationResponse response = new UserIdentificationResponse();
+ response.errorMessage = errorMessage;
+ doAnswer((invocation) -> {
+ Log.d(TAG, "Answering " + invocation + " with " + response);
+ @SuppressWarnings("unchecked")
+ HalCallback<UserIdentificationResponse> callback =
+ (HalCallback<UserIdentificationResponse>) invocation.getArguments()[2];
+ callback.onResponse(HalCallback.STATUS_WRONG_HAL_RESPONSE, response);
+ return null;
+ }).when(mUserHal).setUserAssociation(eq(mAsyncCallTimeoutMs), notNull(), notNull());
+ }
+
private void mockManageUsersPermission(String permission, boolean granted) {
int result;
if (granted) {
diff --git a/tests/carservice_unit_test/src/com/android/car/user/UserIdentificationAssociationResponseTest.java b/tests/carservice_unit_test/src/com/android/car/user/UserIdentificationAssociationResponseTest.java
new file mode 100644
index 0000000..f9ca16d
--- /dev/null
+++ b/tests/carservice_unit_test/src/com/android/car/user/UserIdentificationAssociationResponseTest.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.car.user;
+
+import static android.car.user.UserIdentificationAssociationResponse.forFailure;
+import static android.car.user.UserIdentificationAssociationResponse.forSuccess;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.testng.Assert.assertThrows;
+
+import android.car.user.UserIdentificationAssociationResponse;
+
+import org.junit.Test;
+
+public final class UserIdentificationAssociationResponseTest {
+
+ @Test
+ public void testFailure_noMessage() {
+ UserIdentificationAssociationResponse response = forFailure();
+
+ assertThat(response).isNotNull();
+ assertThat(response.isSuccess()).isFalse();
+ assertThat(response.getErrorMessage()).isNull();
+ assertThat(response.getValues()).isNull();
+ }
+
+ @Test
+ public void testFailure_withMessage() {
+ UserIdentificationAssociationResponse response = forFailure("D'OH!");
+
+ assertThat(response).isNotNull();
+ assertThat(response.isSuccess()).isFalse();
+ assertThat(response.getErrorMessage()).isEqualTo("D'OH!");
+ assertThat(response.getValues()).isNull();
+ }
+
+ @Test
+ public void testSuccess_nullValues() {
+ assertThrows(IllegalArgumentException.class, () -> forSuccess(null));
+ }
+
+ @Test
+ public void testSuccess_nullValuesWithMessage() {
+ assertThrows(IllegalArgumentException.class, () -> forSuccess(null, "D'OH!"));
+ }
+
+ @Test
+ public void testSuccess_emptyValues() {
+ assertThrows(IllegalArgumentException.class, () -> forSuccess(new int[0]));
+ }
+
+ @Test
+ public void testSuccess_emptyValuesWithMessage() {
+ assertThrows(IllegalArgumentException.class, () -> forSuccess(new int[0], "D'OH!"));
+ }
+
+ @Test
+ public void testSuccess_noMessage() {
+ UserIdentificationAssociationResponse response = forSuccess(new int[] {1, 2, 3});
+
+ assertThat(response).isNotNull();
+ assertThat(response.isSuccess()).isTrue();
+ assertThat(response.getErrorMessage()).isNull();
+ assertThat(response.getValues()).asList().containsAllOf(1, 2, 3).inOrder();
+ }
+
+ @Test
+ public void testSuccess_withMessage() {
+ UserIdentificationAssociationResponse response = forSuccess(new int[] {1, 2, 3}, "D'OH!");
+
+ assertThat(response).isNotNull();
+ assertThat(response.isSuccess()).isTrue();
+ assertThat(response.getErrorMessage()).isEqualTo("D'OH!");
+ assertThat(response.getValues()).asList().containsAllOf(1, 2, 3).inOrder();
+ }
+}
diff --git a/user/car-user-lib/src/android/car/userlib/UserHalHelper.java b/user/car-user-lib/src/android/car/userlib/UserHalHelper.java
index 33a62d9..109a55f 100644
--- a/user/car-user-lib/src/android/car/userlib/UserHalHelper.java
+++ b/user/car-user-lib/src/android/car/userlib/UserHalHelper.java
@@ -24,10 +24,13 @@
import android.hardware.automotive.vehicle.V2_0.InitialUserInfoRequestType;
import android.hardware.automotive.vehicle.V2_0.UserFlags;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociation;
+import android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationSetValue;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationValue;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationGetRequest;
import android.hardware.automotive.vehicle.V2_0.UserIdentificationResponse;
+import android.hardware.automotive.vehicle.V2_0.UserIdentificationSetAssociation;
+import android.hardware.automotive.vehicle.V2_0.UserIdentificationSetRequest;
import android.hardware.automotive.vehicle.V2_0.UsersInfo;
import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
import android.os.SystemClock;
@@ -165,16 +168,26 @@
}
/**
- * Creates VehiclePropValue from request.
+ * Creates a {@link VehiclePropValue} with the given {@code prop}, {@code requestId},
+ * and {@code requestType}.
*/
@NonNull
- public static VehiclePropValue createPropRequest(int requestId, int requestType,
- int requestProp) {
+ public static VehiclePropValue createPropRequest(int prop, int requestId, int requestType) {
+ VehiclePropValue propRequest = createPropRequest(prop, requestId);
+ propRequest.value.int32Values.add(requestType);
+
+ return propRequest;
+ }
+
+ /**
+ * Creates a {@link VehiclePropValue} with the given {@code prop} and {@code requestId}.
+ */
+ @NonNull
+ public static VehiclePropValue createPropRequest(int prop, int requestId) {
VehiclePropValue propRequest = new VehiclePropValue();
- propRequest.prop = requestProp;
+ propRequest.prop = prop;
propRequest.timestamp = SystemClock.elapsedRealtime();
propRequest.value.int32Values.add(requestId);
- propRequest.value.int32Values.add(requestType);
return propRequest;
}
@@ -184,24 +197,33 @@
*/
public static void addUsersInfo(@NonNull VehiclePropValue propRequest,
@NonNull UsersInfo usersInfo) {
+ Objects.requireNonNull(propRequest, "VehiclePropValue cannot be null");
Objects.requireNonNull(usersInfo.currentUser, "Current user cannot be null");
-
- propRequest.value.int32Values.add(usersInfo.currentUser.userId);
- propRequest.value.int32Values.add(usersInfo.currentUser.flags);
-
checkArgument(usersInfo.numberUsers == usersInfo.existingUsers.size(),
"Number of existing users info does not match numberUsers");
+ addUserInfo(propRequest, usersInfo.currentUser);
propRequest.value.int32Values.add(usersInfo.numberUsers);
for (int i = 0; i < usersInfo.numberUsers; i++) {
android.hardware.automotive.vehicle.V2_0.UserInfo userInfo =
usersInfo.existingUsers.get(i);
- propRequest.value.int32Values.add(userInfo.userId);
- propRequest.value.int32Values.add(userInfo.flags);
+ addUserInfo(propRequest, userInfo);
}
}
/**
+ * Adds user information to prop value.
+ */
+ public static void addUserInfo(@NonNull VehiclePropValue propRequest,
+ @NonNull android.hardware.automotive.vehicle.V2_0.UserInfo userInfo) {
+ Objects.requireNonNull(propRequest, "VehiclePropValue cannot be null");
+ Objects.requireNonNull(userInfo, "UserInfo cannot be null");
+
+ propRequest.value.int32Values.add(userInfo.userId);
+ propRequest.value.int32Values.add(userInfo.flags);
+ }
+
+ /**
* Checks if the given {@code value} is a valid {@link UserIdentificationAssociationType}.
*/
public static boolean isValidUserIdentificationAssociationType(int type) {
@@ -231,29 +253,47 @@
}
/**
+ * Checks if the given {@code value} is a valid {@link UserIdentificationAssociationSetValue}.
+ */
+ public static boolean isValidUserIdentificationAssociationSetValue(int value) {
+ switch(value) {
+ case UserIdentificationAssociationSetValue.ASSOCIATE_CURRENT_USER:
+ case UserIdentificationAssociationSetValue.DISASSOCIATE_CURRENT_USER:
+ case UserIdentificationAssociationSetValue.DISASSOCIATE_ALL_USERS:
+ return true;
+ }
+ return false;
+ }
+
+ /**
* Creates a {@link UserIdentificationResponse} from a generic {@link VehiclePropValue} sent by
* HAL.
*/
@NonNull
- public static UserIdentificationResponse toUserIdentificationGetResponse(
+ public static UserIdentificationResponse toUserIdentificationResponse(
@NonNull VehiclePropValue prop) {
Objects.requireNonNull(prop, "prop cannot be null");
checkArgument(prop.prop == USER_IDENTIFICATION_ASSOCIATION_PROPERTY,
"invalid prop on %s", prop);
- checkArgument(prop.value.int32Values.size() > 1,
- "not enough int32Values on %s", prop);
+ // need at least 4: request_id, number associations, type1, value1
+ checkArgument(prop.value.int32Values.size() >= 4, "not enough int32Values on %s", prop);
- int numberAssociations = prop.value.int32Values.get(0);
+ int requestId = prop.value.int32Values.get(0);
+ checkArgument(requestId > 0, "invalid request id (%d) on %s", requestId, prop);
+
+ int numberAssociations = prop.value.int32Values.get(1);
checkArgument(numberAssociations >= 1, "invalid number of items on %s", prop);
- int numberItems = prop.value.int32Values.size() - 1;
+ int numberOfNonItems = 2; // requestId and size
+ int numberItems = prop.value.int32Values.size() - numberOfNonItems;
checkArgument(numberItems == numberAssociations * 2, "number of items mismatch on %s",
prop);
UserIdentificationResponse response = new UserIdentificationResponse();
+ response.requestId = requestId;
response.errorMessage = prop.value.stringValue;
response.numberAssociation = numberAssociations;
- int i = 1;
+ int i = numberOfNonItems;
for (int a = 0; a < numberAssociations; a++) {
int index;
UserIdentificationAssociation association = new UserIdentificationAssociation();
@@ -283,11 +323,11 @@
"invalid number of association types mismatch on %s", request);
checkArgument(request.numberAssociationTypes == request.associationTypes.size(),
"number of association types mismatch on %s", request);
+ checkArgument(request.requestId > 0, "invalid requestId on %s", request);
- VehiclePropValue propValue = new VehiclePropValue();
- propValue.prop = USER_IDENTIFICATION_ASSOCIATION_PROPERTY;
- propValue.value.int32Values.add(request.userInfo.userId);
- propValue.value.int32Values.add(request.userInfo.flags);
+ VehiclePropValue propValue = createPropRequest(USER_IDENTIFICATION_ASSOCIATION_PROPERTY,
+ request.requestId);
+ addUserInfo(propValue, request.userInfo);
propValue.value.int32Values.add(request.numberAssociationTypes);
for (int i = 0; i < request.numberAssociationTypes; i++) {
@@ -300,6 +340,38 @@
return propValue;
}
+ /**
+ * Creates a generic {@link VehiclePropValue} (that can be sent to HAL) from a
+ * {@link UserIdentificationSetRequest}.
+ */
+ @NonNull
+ public static VehiclePropValue toVehiclePropValue(
+ @NonNull UserIdentificationSetRequest request) {
+ Objects.requireNonNull(request, "request cannot be null");
+ checkArgument(request.numberAssociations > 0,
+ "invalid number of associations mismatch on %s", request);
+ checkArgument(request.numberAssociations == request.associations.size(),
+ "number of associations mismatch on %s", request);
+ checkArgument(request.requestId > 0, "invalid requestId on %s", request);
+
+ VehiclePropValue propValue = createPropRequest(USER_IDENTIFICATION_ASSOCIATION_PROPERTY,
+ request.requestId);
+ addUserInfo(propValue, request.userInfo);
+ propValue.value.int32Values.add(request.numberAssociations);
+
+ for (int i = 0; i < request.numberAssociations; i++) {
+ UserIdentificationSetAssociation association = request.associations.get(i);
+ checkArgument(isValidUserIdentificationAssociationType(association.type),
+ "invalid type at index %d on %s", i, request);
+ propValue.value.int32Values.add(association.type);
+ checkArgument(isValidUserIdentificationAssociationSetValue(association.value),
+ "invalid value at index %d on %s", i, request);
+ propValue.value.int32Values.add(association.value);
+ }
+
+ return propValue;
+ }
+
private UserHalHelper() {
throw new UnsupportedOperationException("contains only static methods");
}
diff --git a/watchdog/product/carwatchdog.mk b/watchdog/product/carwatchdog.mk
index 028f67b..6829177 100644
--- a/watchdog/product/carwatchdog.mk
+++ b/watchdog/product/carwatchdog.mk
@@ -16,10 +16,10 @@
PRODUCT_PACKAGES += carwatchdogd
# SELinux public policies for car watchdog services
-PRODUCT_PUBLIC_SEPOLICY_DIRS += packages/services/Car/watchdog/sepolicy/public
+BOARD_PLAT_PUBLIC_SEPOLICY_DIR += packages/services/Car/watchdog/sepolicy/public
# SELinux private policies for car watchdog services
-PRODUCT_PRIVATE_SEPOLICY_DIRS += packages/services/Car/watchdog/sepolicy/private
+BOARD_PLAT_PRIVATE_SEPOLICY_DIR += packages/services/Car/watchdog/sepolicy/private
# Include carwatchdog testclient if the build is userdebug or eng
ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))